0

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

我正在关注关于 Linux Expect Command 的教程,以自动将 ssh 导入节点并自动安装开源 R。

我有点卡在 ssh 部分:(教程在这里

#!/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 替换为 interact ,它就会将控制权交给用户。

4

1 回答 1

2

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

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

send -- "\r"

interact

http://wiki.tcl.tk/3914

于 2013-10-09T16:43:34.043 回答