首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tcl期望从tclsh输出到shell脚本。

Tcl期望从tclsh输出到shell脚本。
EN

Stack Overflow用户
提问于 2015-01-26 21:13:03
回答 1查看 262关注 0票数 0

我正在寻找最后几天来解决我的问题,所以我终于来到这里。

我需要编写一个应该从Linux/Debian系统打开的Tcl脚本。问题是,脚本应该登录到Cisco路由器,然后进入特殊的tclsh模式,在那里它应该获得表示txload的SNMP值。过了一会儿,我得到了tclsh模式下的值(它支持SNMP),但是我无法将它返回到我的脚本中。它仍然只存在于路由器tclsh模式中。我的脚本应该根据我在tclsh中已经拥有的值来更改其他一些值,但是不再需要tclsh。

下面是我的问题:我如何从tclsh获得$ifnum值,但我仍然可以在脚本中使用一些循环,因为我需要在一些循环中使用$ifnum作为条件?

正如您所看到的,这个脚本还没有完成,但正如我说的,我被困在这里,试图弄清楚:

代码语言:javascript
复制
#!/usr/bin/expect -f

set gateway [lindex $argv 0]
set serial [lindex $argv 1]
set timeout 5

spawn telnet $gateway
expect "Password:"
send "cisco\r"
expect "*>"
send "en\r"
expect "Password:"
send "cisco\r"
expect "*#"
send "set ifnumstr \[snmp_getone odczyt 1.3.6.1.4.1.9.2.2.1.1.24.6\]\r"
expect "*}"
send "regexp \{val='(\[0-9\]*)'\} \$ifnumstr \{\} ifnum \r"
expect "*#"
send "puts \$ifnum \r"
expect "*#"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-27 03:06:42

我会让它打印出在标记之间寻找的东西,然后在其RE匹配模式中使用expect来获取值。

代码语言:javascript
复制
send "puts \"if\\>\$ifnum<if\"\r"
expect -re {if>(.*?)<if}
# Save the value in a variable in the *local* script, not the remote one
set ifnum $expect_out(1,string)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28158873

复制
相关文章

相似问题

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