2016-07-23 48 views
-1

我使用expect我的SSH服务器上连接:如何继续SSH服务器上输入命令时,使用期望

#!/bin/expect 

set command [lindex $argv 0] 
set command_connect "connect" 

proc connect {} { 
    spawn ssh [email protected] 
    expect "password" 
    send "password\r" 
    interact 
} 

if {$command == $command_connect} { 
    connect 
} 

所有良好的工作,我可以连接到服务器,但我可以不输入命令!不知怎的,所有命令都进入我的电脑!如果我尝试清屏:

proc connect {} { 
    spawn ssh [email protected] 
    expect "password" 
    send "password\r" 
    spawn clear 
    interact 
} 

然后,我在我的电脑和SSH连接断开清屏(我回到我的控制台)!


为什么会发生这种情况,以及如何在SSH服务器上继续输入命令?

回答

1

如果你想将命令发送到远程服务器,那么你就需要通过衍生SSH过程中,向他们发送:

expect "$" 
send "clear\r" 

第一行是确保远程服务器上的提示出现。

+0

我有新的问题,也许你可以帮我 - http://stackoverflow.com/questions/38547629/how-does-i-know-whether-the-console-control-is-returned – bukashka101

1

此外,因为您在spawn ing程序中,spawn_id变量将具有本地范围。如果您打算将连接封装在proc中,但能够在过程外使用衍生进程,则需要将global spawn_id添加到过程主体。

相关问题