cat someFile | ssh someHost
当 someFile 是时我怎样才能工作不是bash 脚本?我想远程执行珀尔但是当我尝试使用 cat | 脚本时,我从 bash 中得到了一堆语法错误ssh 命令。
答案1
如果您想通过 SSH 连接推送 Perl 脚本,则必须在远程端运行 Perl 解释器。它将从标准输入读取脚本:
ssh remotehost perl < somescript.pl
对于 Perl,它甚至应该-T
从输入的 hashbang 行读取命令行开关(除了 )。
如果你想给 Perl 解释器提供命令行参数,你可以将它们添加到命令行之后perl
。如果你想为脚本,您需要明确告诉解释器从 stdin 读取脚本(否则它将采用第一个参数作为要查找的文件名)。
那么,这里-l
是解释器和foo
脚本bar
:
echo 'print "> $_" foreach @ARGV' | ssh remotehost perl -l - foo bar
请注意,执行此操作仅ssh somehost < script.sh
依赖于远程登录 shell 与脚本兼容。 (即,如果远程 shell 碰巧是其他东西,Bash 脚本将无法工作。)
答案2
ssh someHost
将执行您的默认 shell,而默认 shell 又将执行从标准输入读取的命令。由于您要将 的内容发送someFile
到标准输入,因此它在逻辑上会尝试执行 someFile 的内容。
您没有告诉我们 someFile 应该包含什么。假设它的内容应该输入到你的 perl 脚本中,你应该做的是:
cat someFile | ssh someHost your_perl_script
或更好:
ssh someHost your_perl_script < someFile
答案3
为了=>
将本地输出写入远程文件:您刚刚在 $myhost 上安装了 apache。现在你想测试一下。
您可以将测试字符串回显到文件中,只是这次文件位于远程 htdocs 根目录中:
回声“它有效”| SSH[电子邮件受保护]'猫>> /usr/local/apache/htdocs/it_works.html'
使用 less 或 cat 打开远程文件: 与猫:
SSH[电子邮件受保护]“猫/usr/local/apache/htdocs/it_works.html”
更少:
SSH[电子邮件受保护]“少/usr/local/apache/htdocs/it_works.html”
Grep 远程文件:
带管:
SSH[电子邮件受保护]“猫/usr/local/apache/htdocs/it_works.html”| grep“有效”
只需远程 grep:
SSH[电子邮件受保护]“grep 工作 /usr/local/apache/htdocs/it_works.html”
用tail查看远程日志:
这样就可以实时观察apache服务器的访问情况:
SSH[电子邮件受保护]“尾-f /etc/httpd/logfiles/access_log”
这个答案的来源是这里。