我正在编写一个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
这样做!谢谢您的帮助 –