繁体   English   中英

Unix:ssh 正在通过命令行而不是通过脚本工作

[英]Unix : ssh is working through command line but not through script

下面的命令是通过命令行工作的:

expect -c 'spawn ssh username@Host ; expect "assword:" ; send "<password>\r" ; interact;'

如果我包含在脚本中,则以下内容不起作用

while read server_from_file
do
    expect -c 'spawn ssh username@${server_from_file}; expect "assword:" ; send "<password>\r" ; interact;'
done < serverlist.conf

还请让我知道我们如何使用上述脚本运行某些命令

expect从其环境继承标准输入。 在第一种情况下, expect使用脚本的标准输入作为它的标准输入。 在第二种情况下, expect从封闭的 while 循环继承标准输入,因此它将从文件中读取。 一种典型的解决方案是为循环使用不同的 fd。 例如:

while read server_from_file <&3  
do
    expect -c 'spawn ssh username@${server_from_file}; expect "assword:" ; send "<password>\r" ; interact;'
done <3 serverlist.conf

(注意,一些 shell 提供了 -u,还有其他方法可以做到这一点,但这应该会让你指向正确的方向。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM