2012-09-14 24 views
1

我的最終目標是做一個路由器的telnet並與之交互。以下期望腳本根本不能幫助我。路由器沒有任何用戶標識或密碼。它是自動登錄。發送spawn id exp4沒有打開錯誤的預期

預期文件代碼。

set iptotelnet "10.x.x.x" 
spawn telnet $iptotelnet 

sleep 10 
expect ">" #this is because initially the prompt will be > 
sleep 10 
send "enable\r" # this should change the prompt from > to # 

sleep 10 
expect "#" 
sleep 10 
interact 
sleep 10 
exit 

但是,我得到以下錯誤。

 
send: spawn id exp4 not open 
    while executing 
send "enable\r". 

這不僅僅是與telnet,我也得到了與任何其他命令相同的錯誤。

請幫幫我。

+0

腳本沒有任何明顯錯誤(註釋除外,它們應該分開放置,或者用';'而不是'#'引入)。我猜測問題在於某些配置問題。 –

回答

2

你的腳本沒有與它有關的主要問題,不會導致spawn這樣失敗。 (您的評論會導致問題,但通過使用;#而不是#可以簡單解決。)因此,您的問題存在於其他地方(很可能具有很高的可能性)。

我看到你正試圖用Windows上的Expect控制telnet。唉,telnet是一種無法用這種方式控制的特殊情況 - 期望在Windows上使用系統調試工具攔截終端輸出,但這對於設置了特殊系統權限的可執行文件不起作用,而telnet是其中一個這是真實的程序 - 所以你需要另一種方法。最簡單的方法是獲得plink.exe(這對終端/自動化來說確實是PuTTY),並使用它(以「telnet」模式)而不是telnet。

+0

注意:不能像這樣自動化PuTTY;它是GUI子系統應用程序,所以你需要一個GUI自動化程序,它們比期望更復雜。你也無法比較這個領域的Windows與Unix的經驗;他們以完全不同的方式處理終端(Expect/Unix使用系統虛擬終端設備,Windows根本不存在)。 –

+0

是的..我明白你說的任何話。那麼,對我來說有沒有不同的方法?因爲,我必須在窗戶上工作......(公司規則)。 – Alapati

+0

另一種方法是使用plink。或者在虛擬機中運行unix。 :-) –

0

也許你不能在send命令行中使用# comments
在發送字符串中嘗試相同但沒有評論。

+0

我只爲了可讀性而添加了評論。最初沒有評論。我試了一下沒有評論..不工作... – Alapati

+0

我認爲產卵不能與'telnet 10.x.x.x'命令一起使用。你是否嘗試手動? – Arseniy

+0

雅...我從命令提示符手動嘗試,它的工作。似乎spawn和telnet不能在Windows XP中工作。有沒有解決辦法? – Alapati

0

它也發生在我身上。它已被解決。

我嘗試自動遠程登錄Windows上的Cygwin中的服務器。

但在Windows中安裝微軟的Telnet將無法在Cygwin的工作殼

如果你有以下的響應,這是你的問題的源類型: $其遠程登錄 /cygdrive/C/WINDOWS/system32/telnet

有兩種解決方案: 1.對於Cygwin x86,只需簡單安裝包含「inetutil」的軟件包,其中包含telnet命令。 2.對於Cygwin x86_64,目前(2013-09-09)「inetutil」未連接到64位,因此我使用屬於PuTTy的plink.exe代替