【发布时间】:2013-02-05 06:15:58
【问题描述】:
我正在尝试通过 ssh 远程执行从标准输入获取数据的 perl 脚本。 棘手的部分是我不想将脚本本身上传到远程服务器。 远程脚本将从标准输入读取的数据由另一个本地运行的 perl 脚本生成。
假设如下:
- 我的本地脚本生成数据称为 cron_extract_section.pl
- 我将远程运行的本地脚本称为 cron_update_section.pl
- 两个脚本都在命令行中使用一个参数,一个简单的词
如果脚本存在于远程机器上,我设法远程执行脚本:
./cron_extract_section.pl ${SECTION} 2> /dev/null | ssh user@remote ~/path/to/remote/script/cron_update_section.pl ${SECTION}
我也知道我可以在远程服务器上运行脚本而无需先上传它,使用以下语法:
ssh user@remote "perl - ${SECTION}" < ./cron_update_section.pl
我不知道如何通过 ssh 将本地脚本 cron_update_section.pl 提供给 perl,并将本地脚本 cron_extract_section.pl 的结果通过管道传输到 perl。
我尝试了以下方法,perl 脚本执行正常,但从 stdin 中没有可读取的内容:
./cron_extract_section.pl ${SECTION} 2> /dev/null | ssh user@remote perl - ${SECTION} < ./cron_update_section.pl
您知道是否可以在不修改脚本的情况下这样做?
【问题讨论】:
标签: unix ssh pipe io-redirection