2014-03-04 54 views
0

我沒有任何主要的腳本編寫經驗,我對我正在處理的腳本感到非常困惑。Linux中的Telnet和opennig命令提示符腳本

  1. 我使用dynagen在Linux和創建了一個基本的拓撲與兩個路由器R1(FA0/0 = 10.1.1.1 /端口2101)和R2(FA0/0 = 10.1.1.2 /端口2102)。

  2. 我設法創建了一個python腳本並運行路由器,我可以啓動和停止它們並打開控制檯,我也可以從putty運行它們並執行相同的任務。

  3. 我需要一個腳本來自動telnet到我的Linux並提示我輸入用戶名和密碼/啓動路由器/打開設備的命令提示符/將當前正在運行的配置文件保存在一個文件夾中。

這是我來到了我的第三個任務,到目前爲止,它遠程連接到我的Linux,但沒有提示我輸入用戶名和密碼,它只是打印出來,而我堅持的休息。

#!/usr/bin/expect 

set timeout 20 
spawn telnet x.x.x.x 
expect "login:" 
expect "Username:" 
send "user\r" 
expect "Password:" 
send "pass\r"; 
interact 

感謝任何幫助。

+2

如果您只是在命令提示符下鍵入「telnet x.x.x.x」,會發生什麼情況? –

+0

它提示我輸入用戶名和密碼,然後成功telnet到我的Linux。 – user3361624

+0

確保你所期望的'符合你所看到的...如果你將上面的shell命令結果複製並粘貼到問題中會更有幫助......不幸的是,可能很難測試(對我們來說)這幾天沒有太多的telnet服務器...... –

回答

0

我在這裏要做的是使用expect命令的regexp模式,並等待「login:」或「Username:」。類似以下內容:

#!/usr/bin/expect 

set timeout 20 
spawn telnet x.x.x.x 
expect { 
    -re "login:|Username:" { 
     send "user\r" 
     expect "*assword:" 
     send "pass\r"; #After this you may want to expect an appropriate prompt (>, $, #, or whatever) prior to handing control over to user 
     interact 
    } 
    timeout { 
     puts "Timed out while waiting for login prompt" 
    } 
} 

讓我知道那是怎麼回事。

+0

感謝您的回覆,我試了一下,它的工作。現在我可以telnet到我的Linux,現在我需要一個自動腳本,啓動我的路由器(R1和R2),打開他們的控制檯,並保存當前運行的配置文件到夾。我看到了很多不同的腳本,我很困惑。我必須打開R1和R2的端口嗎? – user3361624

+0

不知道你的設置如何工作,但在上面的腳本中,你可以刪除「交互」命令,並用發送/期望對發送你需要的任何命令來替換它。 基本上,通過命令行交互式登錄時可以執行的任何操作都可以通過期望自動完成。這是期望的意圖。由於expect是Tcl的擴展,因此您可以隨時使用所有Tcl構造來執行條件分支以及您可能需要的任何操作。請參閱[這些示例](http://www.pantz.org/software/expect/expect_examples_and_tips.html),它們應該可以幫助您擴展腳本。 – James

+0

糾正我,如果我錯了,我想我需要得到我的Linux和我的路由器之間的雲連接,以便它們可以互相ping通,然後將命令「啓動R1/R2」和「控制檯R1/R2」添加到我的腳本。 – user3361624

相關問題