我正在编写一个期望脚本,它将 ssh 到几个 IP 以测试它们的连接性。我想包含一个“puts”语句,将每个测试的结果写入调用脚本的机器上的文件中。尽管我认为我正在遵循将 put 写入文件的手册,但它只写入 stdout。请参阅下面的脚本。最终结果是文件是在本地机器上创建的,但没有输出指向它。相反,输出到标准输出。
#!/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 $USER@$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