2015-11-04 109 views
1

我希望能夠使用expect腳本使用SSH連接遠程登錄到路由器不能正常工作,這就是我:發送命令密碼使用期望在SSH連接腳本

#!/usr/bin/expect 

set host "192.168.1.50" 

set user "root" 

set password "mypass" 

spawn ssh "$user\@host" 

expect "word:" 

send "$password\r" 

當我試圖使用它,路由器變得沒有響應(可能超時)。當它進入密碼提示行時,它立即返回。

我在第一次登錄時提示「yes/no」問題時,使用我的SSH密鑰通過手動輸入「yes」進行了身份驗證。然後,第一次嘗試後,路由器自動提示我密碼。確切的說,它有兩條線:

User Authentication 
Password: 

然後幾秒鐘後,又回到我的根就好像是密碼提示後發送命令沒有發送任何東西。

所以,我的問題,與我對預期和腳本一般知識非常有限:是什麼解決方案?有什麼想法是錯的?

+2

發送後,添加'interact'行,以便重新獲得控制權。如果這不能解決問題,請使用'expect -d'運行以查看調試輸出。 –

+0

它的作品,非常感謝。 – randomguy43

回答

0

我有這個確切的問題,我不能「拿起」expect停止,我認爲這將是默認行爲。

正如@glennjackman在評論中所說的那樣,在最後加入interact可以讓你選擇它離開的地方。

#!/usr/bin/expect 
set host "192.168.1.50" 
set user "root" 
set password "mypass" 
spawn ssh "$user\@host" 
expect "word:" 
send "$password\r" 
interact