Linux 如何使用expect继续在SSH服务器上输入命令
我正在使用Linux 如何使用expect继续在SSH服务器上输入命令,linux,ssh,tcl,expect,Linux,Ssh,Tcl,Expect,我正在使用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} {
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服务器上继续输入命令?如果要向远程服务器发送命令,则需要通过生成的SSH进程发送命令:
expect "$"
send "clear\r"
第一行是确保远程服务器上出现提示。此外,由于您正在过程中生成
spawn
,因此spawn\u id
变量将具有本地作用域。如果您打算将连接封装在进程内部,但能够在进程外部处理生成的进程,则需要将全局生成id
添加到进程正文中。我有新问题,也许您可以帮助我-