我的本地机器上有一个 Perl 脚本,我想在远程服务器上运行它。以下命令工作正常:
ssh user@ipaddress "perl - --arg1 arg1 --arg2 arg2" < /path/to/local/script.pl
问题是出现提示要求我输入密码,而我不希望那样。
我环顾网络,找到了3个解决方案:
- 使用公钥/私钥身份验证->在我的情况下不行
- 使用 sshpass -> 不在我公司的“官方”仓库中,因此无法安装
- 使用期望
我按照此页面创建了我的期望脚本(我是新手):如何使用 bash/expect 检查 SSH 登录是否有效,我从正确答案中获取了脚本,并将前 3 行替换#!/usr/bin/expect -f
为有一个期望脚本。
然后我跑了
./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 运行脚本吗?非常感谢。