我正在編寫一個expect腳本,它將ssh轉換爲幾個IP來測試它們的連接。我想包含一個「puts」語句,將每個測試的結果寫入調用腳本的機器上的一個文件中。儘管我認爲我正在按照put來寫入文件的手冊,但它只寫入stdout。請參閱下面的腳本。最終的結果是該文件在本地機器上創建,但沒有輸出指向它。相反,輸出到stdout。expect將寫入文件
#!/bin/bash
USER=user
PASSWORD=password
IPSTART=12.34.56.
OUTFILE="TEST.log"
PROMPT="#"
for IPEND in `seq 200 231`
do
expect -c "
set timeout 3
set chan [open $OUTFILE w]
spawn ssh [email protected]$IPSTART$IPEND
expect -re \".*ssword.*\" {send \"$PASSWORD\n\"}
expect {
-re \".*Are you sure you want to continue connecting.*\" {send \"yes\n\"; exp_continue}
-re \".*$PROMPT.*\$.*\" {puts $chan \"$IPSTART$IPEND\n\"; send \"exit\n\"}
}
close $chan
"
done
我想知道是否有引用的問題,但我無法弄清楚。
作爲參考,這是從http://www.tcl.tk/man/tcl8.4/TclCmd/puts.htm
set chan [open my.log a]
set timestamp [clock format [clock seconds]]
puts $chan "$timestamp - Hello, World!"
close $chan
這樣做!謝謝您的幫助 –