Linux期待SSH挂起

时间:2013-10-09 16:35:59

标签: linux bash ssh expect

我尝试在一组计算机上安装R,有人告诉我查看Expect。

我正在关注Linux Expect Command的教程,以自动执行ssh到节点的过程并自动安装开源R.

我有点困在ssh部分: (Tutorial goes here

#!/usr/bin/expect -f 

if {[llength $argv] != 3} {
puts "usage: ssh.exp username server password"
exit 1
}

set username [lrange $argv 0 0]
set server [lrange $argv 1 1]
set password [lrange $argv 2 2]

set timeout 60

spawn ssh $username@$server.mycompany.com

match_max 100000

expect "*?assword:*"

send -- "$password\r"

send -- "\r"

expect eof

我可以运行代码并登录到远程服务器,但是,我输入ls并且它只是挂在远程服务器端。我按ctrl + c然后退出并返回主机服务器。

任何人都可以在登录后告诉我如何在Expect中继续此过程。

更新:由于Ireeder的回答。

您只需将expect eof替换为interactive,它就会将控件移交给用户。

1 个答案:

答案 0 :(得分:2)

interact放在脚本的末尾,该脚本将控制权返回给脚本调用者,并允许您与远程shell进行交互。所以改变你的脚本:

#... top of script
send -- "$password\r"

send -- "\r"

interact

请参阅http://wiki.tcl.tk/3914