期望脚本 - 未找到 bash 脚本文件

期望脚本 - 未找到 bash 脚本文件

我的期望脚本

#!/usr/bin/expect -f

#I tried replacing sh - with bash -s still no positive results
spawn ssh xxxx@yyyy "sh -" < test.sh
expect "password: "
send "zzzzz\r"
expect "$ "

如果在终端中执行该命令效果很好

ssh xxxx@yyyy "sh -" < test.sh

但是如果我通过expect脚本执行它;它失败。

这是我通过期望脚本执行它的输出。我可以知道我错在哪里吗

bash: test.sh: No such file or directory

PS:是的,该文件存在并且凭据正确。

答案1

<问题在于,当您单独运行 ssh 时(通过您输入的 shell),重定向是在本地完成的,但当您运行时是在远程计算机上完成的expect,因为spawn只是复制您提供的参数,因此<作为 ssh 命令的一部分传递到远程。就像您'ssh' 'xxxx@yyyy' "sh -" '<' 'test.sh'在 shell 中输入一样,这同样不起作用。

您需要添加一个中间 shell 命令以在 ssh 之前解析重定向。例如使用,

spawn sh -c "ssh xxxx@yyyy sh - < test.sh"

相关内容