我正在尝试通过 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
您知道是否可以在不修改脚本的情况下这样做?