首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >很少有部分在expect tcl中丢失。

很少有部分在expect tcl中丢失。
EN

Stack Overflow用户
提问于 2014-07-04 19:41:16
回答 1查看 87关注 0票数 1

我有一个expect脚本,它告诉路由器并给出一个命令并记录输出。下面的片段应该是理想的输出。

代码语言:javascript
运行
复制
==========================================================================
slot          type            number       number       rev.     addresses
----   ------------------   ----------   ----------   --------   ---------
0/0    GE-4 IOA             4306297694   4500006802     A04          4    
0/1           ---              ---          ---         ---         ---   
1/0    GE-4 IOA             4306255468   4500006802     A04          4    
1/1           ---              ---          ---         ---         ---   
2/0    GE-8 IOA             4306211660   4500009102     A05          8    
2/1           ---              ---          ---         ---         ---   
3/0           ---              ---          ---         ---         ---   
3/1           ---              ---          ---         ---         ---   
4/0           ---              ---          ---         ---         ---   
4/1           ---              ---          ---         ---         ---   
5/0    OC3/STM1-8 ATM IOA   4305503226   4500006903     A02               
5/1           ---              ---          ---         ---         ---   
7/0    SRP IOA              4306297292   4501006502     A00          2    
11/0   Service IOA          4306516819   4501007103     A00               
11/1          ---              ---          ---         ---         ---   
12/0          ---              ---          ---         ---         ---   
12/1          ---              ---          ---         ---         ---   
13/0      GE-4 IOA             4306255468   4500006802     A04          4    
13/1          ---              ---          ---         ---         ---   
14/1          ---              ---          ---         ---         ---   
15/0          ---              ---          ---         ---         ---   
15/1          ---              ---          ---         ---         ---   
==========================================================================

但我得到的是..。13/0行已损坏,13/1完全丢失,这是相当一致的-只有这些行被损坏。我把match_max设为60000。我甚至在发出命令后加上了“睡眠10”。

代码语言:javascript
运行
复制
==========================================================================
slot          type            number       number       rev.     addresses
----   ------------------   ----------   ----------   --------   ---------
0/0    GE-4 IOA             4306297694   4500006802     A04          4    
0/1           ---              ---          ---         ---         ---   
1/0    GE-4 IOA             4306255468   4500006802     A04          4    
1/1           ---              ---          ---         ---         ---   
2/0    GE-8 IOA             4306211660   4500009102     A05          8    
2/1           ---              ---          ---         ---         ---   
3/0           ---              ---          ---         ---         ---   
3/1           ---              ---          ---         ---         ---   
4/0           ---              ---          ---         ---         ---   
4/1           ---              ---          ---         ---         ---   
5/0    OC3/STM1-8 ATM IOA   4305503226   4500006903     A02               
5/1           ---              ---          ---         ---         ---   
7/0    SRP IOA              4306297292   4501006502     A00          2    
11/0   Service IOA          4306516819   4501007103     A00               
11/1          ---              ---          ---         ---         ---   
12/0          ---              ---          ---         ---         ---   
12/1          ---              ---          ---         ---         ---   
13/0   G    ---   
14/1          ---              ---          ---         ---         ---   
15/0          ---              ---          ---         ---         ---   
15/1          ---              ---          ---         ---         ---   
==========================================================================

不知道为什么会发生这种事。

这是代码

代码语言:javascript
运行
复制
if {[info exists router_name]} {
    spawn telnet $router_name
    sleep 3
} else {
    return "Spawner<< No router_name\n"
}

##newly added
expect -re ".*>|.*#" {
        exp_send "term len 0\n" 

    puts "issuing show hard"
    expect -re ".*>|.*#" {  
        exp_send "show hard\n"
    }

    #sleep 10
    #puts "issuing newlines"
    expect -re ".*>|.*#" { exp_send "exit\n\n\n\n" }
} -re ".*login.*|.*name.*" {
    if {[info exists router_username]} {
        exp_send "$router_username\n"
    }   
    exp_continue
} -re ".*word*" {
    if {[info exists router_pass]} {
        exp_send "$router_pass\n"
    }   
    exp_continue    
} 

expect -re ".*" {}

close

行exp_send“显示硬件\n”;是给定的命令-我需要该命令的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-07 07:20:59

正如@DonalFellow所建议的那样--解决问题的方法完成了这项工作。

添加一个段来检测“--更多--”并发送"\n\n“输出,而不会中断。

以下是更改后的代码

代码语言:javascript
运行
复制
if {[info exists router_name]} {
    spawn telnet $router_name
    sleep 3
} else {
    return "Spawner<< No router_name\n"
}

expect -re ".*>|.*#" {
        exp_send "term len 0\n" 

    puts "issuing show hard"
    expect -re ".*>|.*#" {  
        exp_send "show hard\n"
    }

    #sleep 10

    expect -re ".*>|.*#" {
        exp_send "exit\n\n\n\n"
    } -re ".*--More--.*" {
        exp_send "\n\n"
    }

} -re ".*login.*|.*name.*" {
    if {[info exists router_username]} {
        exp_send "$router_username\n"
    }   
    exp_continue
} -re ".*word*" {
    if {[info exists router_pass]} {
        exp_send "$router_pass\n"
    }   
    exp_continue    
} 

expect -re ".*" {}

close
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24580063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档