Cisco显示php脚本中的dmvpn正则表达式更改正则表达式
查询cisco路由器以从分支集线器路由器提取“show dmvpn”输出的脚本。但是,我们升级了一个集线器路由器,新的IOS现在显示“show dmvpn”命令的日期/时间信息。以前的IOS版本仅显示“从不”,并且在使用该脚本时,由于(\S+)原因,它会为较新的IOS路由器抛出错误 我试图读懂正则表达式,但对如何加入[3x]单词/日期/时间却一无所知 工作:Cisco显示php脚本中的dmvpn正则表达式更改正则表达式,php,regex,cisco,Php,Regex,Cisco,查询cisco路由器以从分支集线器路由器提取“show dmvpn”输出的脚本。但是,我们升级了一个集线器路由器,新的IOS现在显示“show dmvpn”命令的日期/时间信息。以前的IOS版本仅显示“从不”,并且在使用该脚本时,由于(\S+)原因,它会为较新的IOS路由器抛出错误 我试图读懂正则表达式,但对如何加入[3x]单词/日期/时间却一无所知 工作: if(pregmatch("/^\s+\d+\s+(\d+\.\d+\.\d+\.\d+)\s+(\d+\.\d+\.\d+\.\d+)\
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
不工作:Regex在实际显示上行/下行隧道计时器的日期/时间的较新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
这似乎是一个简单的正则表达式修复,但目前超出了我的编码范围。我还试图寻找答案,但每个人都在使用不同的术语来表示“正则表达式”和“正则表达式”如果您处于隧道模式,您的正则表达式只会与行匹配:
$Tunnel\u int=TRUE
但是您给我们的代码示例不包含以“Tunnel”开头的字符串,因此您没有以Tunnel模式传递,因此您从未尝试匹配regexp。这就是为什么即使regexp是正确的,脚本也不能工作
您的问题是算法问题,而不是regexp问题。
但是,由于我们不知道你想做什么,也不知道你想测试什么,所以很难提供帮助
如果你没有开发人员的技能来维护这一点,也许你应该得到一个自由职业开发人员的帮助,帮助你理解自己的需求并修改代码
如果你有更具体的信息,那么你可以在某个主题上寻求更精确的帮助
祝您项目好运。您的代码,还是要验证输入?我同意Hamza的说法。\S+匹配“从不”、“08:59:16”或“5d00h”。你需要解析它来处理它吗?@HamZa我想正则表达式很好,它必须是检查结果输出的方式。我添加了匹配和回显结果的函数。新的cisco IOS仍然不会出现。@LethalGimmick lolwut,你在2个月后回复?如果您想支持其他路由器,那么您需要提供更多的输入。@LethalGimmick现在让我们再等2个月,等待答复。