所以我试图基本上通过 ssh 进入服务器并在那里运行本地期望脚本。我尝试遵循类似于 bash 命令的方式,即
ssh -A user@remote "bash -s" < ./script "arg1" "arg2"
我为我的期望脚本采用了以下格式:
ssh -A user@remote "expect" < ./script "arg1" "arg2"
但我不断收到以下错误:
couldn't read file "arg1": No such file or directory.
我认为它正在尝试将我的第一个参数作为文件读取,并尝试通过查看这篇文章来解决这个问题:如何在远程计算机上执行本地脚本并包含参数?但是,这些解决方案都不适合我。可能是什么问题呢?
谢谢
答案1
expect
似乎非常努力地从第一个参数中读取,就好像它是一个文件一样,即使有人使用-
该插槽。一种解决方法似乎是提供/dev/stdin
文件名以供expect
读取。
$ printf 'puts [lindex $argv 1]' | ssh host 'expect /dev/stdin one two'
two
$