查询 cisco 路由器以从分支集线器路由器中提取“show dmvpn”输出的脚本。然而,我们升级了集线器路由器,新的 IOS 现在显示“show dmvpn”命令的日期/时间信息。以前的 IOS 版本仅显示“从不”,并且在使用脚本时仅由于 (\S+) 而为较新的 IOS 路由器引发错误。
我试图阅读正则表达式,但无法弄清楚如何加入 [3x] 单词/日期/时间。
在职的:
if(pregmatch("/^\s+\d+\s+(\d+\.\d+\.\d+\.\d+)\s+(\d+\.\d+\.\d+\.\d+)\s+(\S+)\s+(\S+)\s+(\S+)/",$line,$hit))
#show dmvpn
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 192.168.1.1 42.10.10.10 UP **never** DN
1 192.168.1.1 42.10.10.10 UP **never** DN
1 192.168.1.1 42.10.10.10 UP **never** DN
不工作:正则表达式在较新的 IOS 上失败,实际上显示了上行/下行隧道计时器的日期/时间:
#show dmvpn
# Ent Peer NBMA Addr Peer Tunnel Add State UpDn Tm Attrb
----- --------------- --------------- ----- -------- -----
1 192.168.1.1 42.10.10.10 UP **08:59:16** DN
1 192.168.1.1 42.10.10.10 UP **04:11:24** DN
1 192.168.1.1 42.10.10.10 UP **2d13h** DN
1 192.168.1.1 42.10.10.10 UP **3w0d** DN
1 192.168.1.1 42.10.10.10 UP **5d00h** DN
我假设我需要在代码中的倒数第二个 (\S+) 旁边添加 (\d+:\d+:\d+) 但不确定如何加入它们,并在其中包含 3w0d 和 5d00h .
这似乎是一个简单的正则表达式修复,但目前超出了我的编码范围。我也试图寻找答案,但每个人都在使用不同的术语来表示“正则表达式”和“正则表达式”