2015-10-29 36 views
0

我試圖讓我的期望腳本讀取文件,爲文件的每一行運行命令並退出保存日誌。代碼如下:[期待] spawn id exp7未打開

#!/usr/bin/expect -f 
set user [lrange $argv 0 0] 
set password [lrange $argv 1 1] 
set ipaddr [lrange $argv 2 2] 
set arg1 [lrange $argv 3 3] 
set systemTime [clock seconds] 
set time [clock format $systemTime -format %a_%b_%d_%[email protected]%H'%M'%S] 
set fp [open "$arg1" r] 
set a "ssh-" 
set b ".txt" 
set s "_" 
append newfile "${a}${arg1}${s}${time}${b}" 
set timeout -1 

spawn ssh [email protected]$ipaddr 
match_max 100000 
expect "*?assword:*" 
send -- "$password\r" 
log_file "$newfile" ; 
expect "*#" 
send_user "This is the $argv0 Script\r" 
while {[gets $fp line] != -1} { 
    send -- "scm $line\r" 
    expect "*#" 
} 
close 
send -- "exit\r" 
expect eof 

我的問題是,一旦涉及到文件我得到以下錯誤的末尾:

E6000_Lab_1# send: spawn id exp7 not open 
    while executing 
"send -- "exit\r"" 
    (file "filetest.tcl" line 28) 

誰能幫助我擺脫這種錯誤的嗎?

回答

1

對不起,我似乎再次得到了我自己。

非常感謝大家回答並提供解決這些問題的一些想法。

我的問題的解決方案是在已打開的文件的ID。一旦我關閉,我的代碼停止崩潰,該snipet低於:

while {[gets $fp line] != -1} { 
    send -- "scm $line\r" 
    expect "*#" 
} 
close $fp 
send "ping xxx.xxx.xxx.xxx timeout 1 repeat-count 100\r" 
expect "# " 
send -- "exit\r" 
expect eof 

正如你所看到的,「$ FP」的「關閉」的說法後,讓我可以發送下一個命令退出循環和沒有錯誤。

0

close與子流程的連接之後,您不能執行sendexpect