필자는 연결 테스트를 위해 여러 IP에 ssh 할 expect 스크립트를 작성하고 있습니다. 각 테스트의 결과를 스크립트를 호출하는 컴퓨터의 파일에 기록하는 "puts"문을 포함하고 싶습니다. puts가 파일에 쓰는 방법은 매뉴얼을 따르고 있다고 생각하지만, stdout에만 쓰는 것입니다. 아래 스크립트를 참조하십시오. 결과적으로 파일은 로컬 시스템에 작성되지만 출력은 로컬 시스템으로 보내지지 않습니다. 대신 출력은 표준 출력으로 이동합니다.puts가 파일에 쓸 것이라고 예상합니다.
#!/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
을! 도와 주셔서 감사합니다 –