我正在使用expect
连接我的SSH服务器:
#!/bin/expect
set command [lindex $argv 0]
set command_connect "connect"
proc connect {} {
spawn ssh username@192.168.1.101
expect "password"
send "password\r"
interact
}
if {$command == $command_connect} {
connect
}
一切顺利,我可以连接到服务器,但我无法输入命令!不知怎的,所有命令都进入我的电脑!如果我试图清除屏幕:
proc connect {} {
spawn ssh username@192.168.1.101
expect "password"
send "password\r"
spawn clear
interact
}
然后我清除了计算机上的屏幕并断开了SSH连接(我回到了我的控制台)!
为什么会发生这种情况以及如何继续在SSH服务器上输入命令?
答案 0 :(得分:1)
如果要将命令发送到远程服务器,则需要通过生成的SSH进程发送命令:
expect "$"
send "clear\r"
第一行是确保远程服务器上的提示出现。
答案 1 :(得分:1)
另外,因为您install.packages('ggplot2', repos = 'http://cran.us.r-project.org')
在一个过程中,spawn
变量将具有本地范围。如果您打算在proc中封装连接,但能够在该过程之外使用生成的进程,则需要将spawn_id
添加到过程体。