2014-02-05 76 views
0

我已經運行了一個奇怪的問題與我寫的期望腳本。基本上,我有服務器A和服務器B.服務器B只能通過telnet從服務器A訪問(不要問...)。當使用交互時,期望腳本只給出輸出

這意味着,我SSH到服務器A,telnet到服務器B,然後運行命令獲取指定用戶的信息負載。現在,當我在最後放置「交互」時,腳本正常工作,但是當我刪除它時,腳本不再給出輸出結果。這裏是粗糙的腳本,它只是一個驗證的概念,現在這樣忽視的事實沒有錯誤/條件語句等:

#!/usr/bin/expect -f 
log_file "/tmp/temporarylog.log" 

set timeout 30 

set user [lindex $argv 0] 

# connect to server A 
send_user "Connecting to server A...\n"; 
spawn ssh [email protected] 

expect "assword: " 
send "password123\n" 

expect "# " 
send "telnet serverb.com 6002\n" 

expect "> " 
send "login passwordabc\n" 
send "user info $user\n" 

# removing this line results in no output 
interact 

運行上面的腳本給我所有的用戶信息的。刪除'交互'腳本似乎telnet到serverb.com,但不使用'登錄'或'用戶信息'。

交互是腳本的最後部分,所以它讓我感到困惑,爲什麼它在它之前破壞事物 - 這是我的第一個期望腳本。

任何幫助表示讚賞。

回答

1

結束與你的腳本:

expect "> " 
send "exit\r" 
expect "# " 
send "exit\r" 
expect eof 

終止您的send字符串與\r也不\n - \ r是回車,也就是按下回車鍵發送。