expect脚本如何记录输出结果

2650阅读 0评论2015-10-27 sync_1521
分类:LINUX

expect可以通过log_file指令保存屏幕输出到一个文件中
例子:
#!/bin/bash
/usr/bin/expect <<-EOF
log_file test
spawn ssh 172.16.4.120
send "ls\r"
expect eof
send "df\r"
expect eof
exit
EOF

执行后就屏幕输出将会都保存在当前目录的test文件
然后awk  sed  该文件,想干嘛就干嘛

另外要注意的一点是该脚本没有用到expect 再send的形式,颠覆了我一贯的认识,原来可以直接send 的

设置expect永不超时
set timeout -1

设置expect 300秒超时,如果超过300没有expect内容出现,则退出
set timeout 300

expect eof 这个一定要加,与spawn对应表示捕获终端输出信息终止,类似于if....endif
假设脚本设置了set timeout -1
然后又没有写expect语句,只有send语句的话,那么脚本就会一直在等
例如:
#!/bin/bash
/usr/bin/expect <<-EOF
set timeout -1

spawn ssh 172.16.4.120
send "ls\r"
expect eof    -----脚本执行到这后会一直等待,假如timeout 为5,则等5秒后再执行后面的语句。
send "df\r"
expect eof
exit
EOF




上一篇:linux script 记录用户命令
下一篇:由12306.cn谈谈网站性能技术