0

我的本地机器上有一个 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 运行脚本吗?非常感谢。

4

1 回答 1

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" ]

一切都像一个魅力。

于 2013-08-30T09:37:06.110 回答