2013-10-14 41 views
0

我是一个期待初学者...我已经写了一个小脚本,必须登录到路由器,并执行几个命令..但是,不知何故我发现,即使当我已使用发送“admin show platform”THRICE,它只为我工作两次..我只获得两次输出admin show platform期待'发送'不按预期工作

任何人都可以检查代码并指出我在哪里,其实我搞砸了的代码..

Gsaxena# 
Gsaxena# 
Gsaxena# ./testTool 
spawn /usr/bin/ksh 
telnet 5.28.7.103 
$ telnet 5.28.7.103 
Trying 5.28.7.103... 
Connected to 5.28.7.103. 
Escape character is '^]'. 


User Access Verification 

Username: 
Username: lab 
Password: 


RP/0/RP0/CPU0:Billorani#debug ospf ospf1 adj 
Mon Oct 14 17:16:06.144 UTC 
**RP/0/RP0/CPU0:Billorani#show platform** 
Mon Oct 14 17:16:06.416 UTC 
Node   Type    PLIM    State   Config State 
------------- ----------------- ------------------ --------------- --------------- 
x/x/x0  xxxxG   N/A    IN-RESET  PWR,NSHUT,MON 

**RP/0/RP0/CPU0:Billorani#show platform** 
Mon Oct 14 17:16:06.416 UTC 
Node   Type    PLIM    State   Config State 
------------- ----------------- ------------------ --------------- --------------- 
x/x/xxx0  xxxxG   N/A    IN-RESET  PWR,NSHUT,MON 
RP/0/RP0/CPU0:Billorani# 

Gsaxena# 
Gsaxena# 
Gsaxena# 
Gsaxena# 
Gsaxena# 


#!/usr/bin/expect 
    set timeout 30 
    set hostcut "Bil" 
     sleep 5 
     set timeout 5 

     spawn /usr/bin/ksh 
     send "telnet 5.8.7.103\r" 
     expect ".*\'\^\]\'\. *" 
     send "\r" 
     expect "Username\:" 
     send "lab\n" 
     expect "Password\: " 
     send "lab\n" 
     sleep 10 

     expect -re "RP\/.\/.*\/CPU.:$hostcut.*#" 
     send "debug ospf ospf1 adj\n" 

     expect -re "RP\/.\/.*\/CPU.:$hostcut.*#" 
     send "admin show platform\n" 

     expect -re "RP\/.\/.*\/CPU.:$hostcut.*#" 
     send "admin show platform\n" 

     expect -re "RP\/.\/.*\/CPU.:$hostcut.*#" 
     send "admin show platform\n" 

回答

1

我真的应该把这个不实际的答案,但在一个评论,因为我没有对你来说是最终的答案,但似乎评论只能由已经出现一段时间的人留下(在你离开他们之前有最低的声望)。

无论如何,我想建议的是,你在脚本开始附近的某处添加了exp_internal 1。这将提供大量有用的调试信息,并且很可能指向正在发生的事情。如果您需要帮助,请随时在此发布。

我不能说你发布的信息有什么问题......没有什么明显的错误。有一件事情我会做不同的事情,不是产生一个Korn shell进程,然后发送一个telnet突击队给它,我只是直接产生telnet命令(更少的代码,更少的资源)。但这不是什么让你烦恼,所以不要介意。

我不熟悉您登录的操作系统......是Cisco IOS XR吗?我很困惑,你发出一个admin show platform命令,但只有show platform显示在你的标准输出中?另外,与双星号(**)的一些提示显示有什么关系,而另一些则不显示?

最后一件事情,可能看起来很愚蠢,但是......您可以手动访问设备并按照确切的顺序发出这4个确切的命令吗?

问候, 詹姆斯

+0

感谢詹姆斯..我用exp_internal 1个选项,但因为我想有点新期望,我没有太多了解'exp_internal 1'生成的日志..是的,我正在使用Cisco IOS XR。 'admin show platform'命令实际上转到路由器的管理模式并执行'sh platform'...关于(**)我不知道为什么这显示在我上面的查询中...在路由器中,此符号不显示。这可能是由于在stackoverflow格式化...反正这**不是输出的一部分。 – user2878235

+0

嗯......我明白了。这双星号的东西很奇怪。无论如何,如果你想编辑你的问题来包含'exp_internal 1'输出,我很乐意看一看。 – James

0

在你的代码

send "admin show platform\n" 

使用 “\ r” 而不是 “\ n”