Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cisco显示php脚本中的dmvpn正则表达式更改正则表达式_Php_Regex_Cisco - Fatal编程技术网

Cisco显示php脚本中的dmvpn正则表达式更改正则表达式

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+)\

查询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
不工作: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个月,等待答复。