我正在编写一些 Expect / TCL 脚本以从路由器中获取重要信息。
我的目标之一是使用我登录路由器的 IP 作为参考来获取路由器 WAN 接口的名称。
示例路由器 IP:66.66.66.66 - 这包含在变量 $rtrname 中。
使用期望,我使用以下表达式评估以下数据 ($expect_out(buffer)),并将其输出到值 $wan...
表达:
regexp (.*?)(?=(?:\..*?)?\s{2,}$rtrname) $expect_out(buffer) wan
$expect_out(缓冲区):
Router1#sh ip int brief
Interface IP-Address OK? Method Status Protocol
Embedded-Service-Engine0/0 unassigned YES NVRAM administratively down down
GigabitEthernet0/0 unassigned YES NVRAM up up
GigabitEthernet0/0.10 55.55.55.55 YES NVRAM up up
GigabitEthernet0/0.20 66.66.66.66 YES NVRAM up up
GigabitEthernet0/1 77.77.77.77 YES NVRAM up up
GigabitEthernet0/2 192.168.1.1 YES NVRAM up up
使用 $rtrname == 66.66.66.66 这将 $wan 作为 GigabitEthernet0/0 正确返回,这就是我想要的。
不幸的是,它不能与这样的输出正常工作:
Router2#sh ip int brief
Interface IP Address Status Protocol
eth 0/1 192.168.1.1 UP UP
eth 0/2 77.77.77.77 UP UP
fr 1.501 55.55.55.55 UP UP
fr 1.502 66.66.66.66 UP UP
当我期待“fr 1”时,这导致 $wan 什么都没有回来。
我使用了一些不同的正则表达式工具,表达式似乎通过了。只是当我将它放入代码中时它没有。我错过了什么?
PS - 我是一名网络工程师,而不是专业的编码员,所以请放轻松!:)