wgdddws 2014-04-10 01:41 采纳率: 0%
浏览 1899

expect/tcl 的问题, 自动保存结果失败

想写一个具有以下功能的tcl脚本,但是总是碰见问题
读取文件a中的命令,并将其send到远端的lab上
在碰到结束符$的时候,查询是否执行完成
执行完成之后,send查询语句,并将结果保存到文件。
碰见的问题:
只能保存最开始的查询结果,以后的会跳出
记录只能保存在文件的末尾...
code在后边附上,哪位大神给帮忙看看额

proc Is_finished {} {
set flag TRUE
while {$flag} {
send "query finish\r"
expect {
"inquery" {sleep 5; continue}
"finish" {set flag FALSE}
timeout { puts $log "test fail";set flag FALSE}
}
}
}
proc save_result {} {
set log [open Result w+]
log_file -open $log
send "query status\r"
expect "#"
send "puts all log\r"
expect "#"
send "\r"
expect "#"
log_file

close $log

}
set file [lindex $argv 0]
set fileid [open $file r+]
seek $fileid 0 start
set timeout 120
spawn ssh admin@192.168.0.115
expect "password:"
send -- "123456\r"
expect ":admin>#"
while {1==1} {
set chars [gets $fileid line1]
if { $chars == 0 } {continue} else {
if { $chars < 0 } {break} else {
if { [string index $line1 0] == "#" } {
#puts $log "==================$line1.result====================="
} else {
if { [string index $line1 0] == "$" } {
Is_finished
save_result
} else {send "$line1\r"}
}
}
}
}
close $fileid

  • 写回答

1条回答

  • coybe 2014-07-18 06:56
    关注

    在close $log之前先flush $log试试

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?