我的本地计算机上有一个Perl脚本,我想在远程服务器上运行它。以下命令工作正常:
ssh user@ipaddress "perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl
问题是提示出现问我密码,我不希望这样。
我环顾网络,找到了3个解决方案:
我按照这个页面来创建我的期望脚本(我是新的期望):How to use bash/expect to check if an SSH login works,我从正确答案中取出脚本,并用#!/usr/bin/expect -f
替换了3个第一行期待剧本。
然后我跑了
./ssh.exp user password ipaddress "perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl
我有超时错误。好像我跑了./ssh.exp user password ipaddress "perl"
我也尝试过像
这样的引号./ssh.exp user password ipaddress '"perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl'
但我有/path/to/local/script.pl not found
错误。
所以有人可以帮我弄清楚如何通过expect运行脚本吗?非常感谢。
答案 0 :(得分:0)
好的,我自己找到了。
仍在使用此答案How to use bash/expect to check if an SSH login works,但我用
替换了第6行set pid [ spawn -noecho sh -c "ssh $1@$3 $4 < /path/to/local/script.pl" ]
一切都像魅力一样。