cat someFile | ssh someHost
当 someFile不是bash 脚本时,我该如何工作?我想远程执行一个perl脚本,但是当我尝试 cat 时,我从 bash 收到了一堆语法错误 | ssh 命令。
ilk*_*chu 11
如果要通过 SSH 连接推送 Perl 脚本,则必须在远程端运行 Perl 解释器。它会从标准输入读取脚本:
ssh remotehost perl < somescript.pl
Run Code Online (Sandbox Code Playgroud)
在 Perl 的情况下,它甚至应该-T
从输入的 hashbang 行读取命令行开关(除了)。
如果你想给 Perl 解释器提供命令行参数,你可以将它们添加到perl
. 如果你想给script提供参数,你需要明确地告诉解释器从 stdin 读取脚本(否则它将把第一个参数作为要查找的文件名)。
所以,在这里-l
去解释,并foo
和bar
到该脚本:
echo 'print "> $_" foreach @ARGV' | ssh remotehost perl -l - foo bar
Run Code Online (Sandbox Code Playgroud)
请注意,这样做仅ssh somehost < script.sh
依赖于与脚本兼容的远程登录 shell。(即,如果远程 shell 碰巧是其他东西,则 Bash 脚本将无法工作。)