2012-06-22 78 views
2
#!/usr/bin/expect -f 
spawn telnet 10.21.0.17 
expect -re "login" 
send "admin\n" 
expect -re "Password" 
send "supersecurepassword\n" 
interact 

按預期工作。一旦運行該腳本,我在其登錄任何TELENT IP我在該行spawn telnet 10.21.0.17shell腳本成功telnet登錄後,如何發出命令?

然後用它降到我的AP

WAP->

殼牌我如何發出更多命令?我想發行reboot,然後可能是sleep 20,最後是exit

我試過用echoexpect沒有成功。我也嘗試刪除interact沒有成功。有任何想法嗎?

+0

爲什麼不發送'send',就像你對用戶名和密碼所做的那樣?我很困惑.. – sarnold

+0

對不起,我也試過。我忘了提及。 'echo''''''' expect''和'send'什麼也不做。只需將我留在WAP - >提示符處。 – TryTryAgain

+0

正如在下面的解決方案中看到的那樣,'send'命令是被使用的,但問題是我需要在第一個shell命令之前的'sleep'。感謝您的快速評論,儘管...始終感激。 – TryTryAgain

回答

2

這是由expect之前簡單地增加一個sleep解決,當然not including interact,以下效果很好:

#!/usr/bin/expect -f 
spawn telnet 10.21.0.17 
expect -re "login" 
send "admin\n" 
expect -re "Password" 
send "supersecurepassword\n" 
sleep 5 
expect "WAP" 
send "reboot\n" 
send "exit\n" 

以供參考,這是用來自動在d-Link的DAP-重啓2590無線接入點。現在我知道了,但我可以用它來做其他事情:更改密碼等等。希望它可以幫助別人。