我尝试在一组计算机上安装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,它就会将控件移交给用户。
答案 0 :(得分:2)
将interact
放在脚本的末尾,该脚本将控制权返回给脚本调用者,并允许您与远程shell进行交互。所以改变你的脚本:
#... top of script
send -- "$password\r"
send -- "\r"
interact