使用php将MTR结果转换为json
我正在创建一个工作系统,在这个系统中,我们的多个位置都有虚拟机,我将有一个中心页面,您可以在其中输入IP,它将从远程MTR中提取所有MTR并转储结果 我认为实现这一点的最佳方法是调用远程服务器上的一个页面,该页面将启动MTR,然后以Json提供结果 我正在努力解决的问题是如何将MTR中的不同值和指标分解为JSON数组中的不同对象。我考虑过regex,但我觉得这是一种更好的方式。感谢所有的帮助 示例MTR供讨论使用php将MTR结果转换为json,php,json,regex,Php,Json,Regex,我正在创建一个工作系统,在这个系统中,我们的多个位置都有虚拟机,我将有一个中心页面,您可以在其中输入IP,它将从远程MTR中提取所有MTR并转储结果 我认为实现这一点的最佳方法是调用远程服务器上的一个页面,该页面将启动MTR,然后以Json提供结果 我正在努力解决的问题是如何将MTR中的不同值和指标分解为JSON数组中的不同对象。我考虑过regex,但我觉得这是一种更好的方式。感谢所有的帮助 示例MTR供讨论 Start: Fri Apr 21 01:56:17 2017 HOST: MTR-
Start: Fri Apr 21 01:56:17 2017
HOST: MTR-DC08 Loss% Snt Last Avg Best Wrst StDev
1.|-- dc03r04ds36.scalabledns.com 0.0% 10 0.1 0.1 0.1 0.1 0.0
2.|-- dc08mx01.scalabledns.com 0.0% 10 0.8 1.1 0.8 2.0 0.0
3.|-- enzu.com-gw.lax.ip4.zayo.com 0.0% 10 0.8 1.2 0.8 2.6 0.5
4.|-- ae16.cr1.lax112.us.zip.zayo.com 0.0% 10 1.0 1.4 1.0 2.5 0.3
5.|-- ae9.mpr1.lax12.us.zip.zayo.com 0.0% 10 1.0 1.0 1.0 1.2 0.0
6.|-- ae7.edge2.LosAngles.Level3.net 0.0% 10 1.0 1.6 0.9 6.8 1.7
7.|-- ae-1-60.edge3.LosAngeles1.Level3.net 0.0% 10 1.1 2.8 1.1 9.1 2.6
8.|-- a.resolvers.level3.net 0.0% 10 1.0 1.0 1.0 1.1 0.0
如果在mtr命令上传递
-j
标志或--json
,则输出将是json。不需要正则表达式
$: mtr -j 8.8.8.8
{"report": {
"mtr": {
"src": "me",
"dst": "8.8.8.8",
"tos": "0x0",
"psize": "64",
"bitpattern": "0x00",
"tests": "10"
},
"hubs": [{
"count": "1",
"host": "???",
"Loss%": 0.00,
"Snt": 10,
"Last": 1.58,
"Avg": 19.83,
"Best": 1.48,
"Wrst": 183.60,
"StDev": 57.54
},
[...]
{
"count": "10",
"host": "google-public-dns-a.google.com",
"Loss%": 0.00,
"Snt": 10,
"Last": 32.19,
"Avg": 31.02,
"Best": 25.18,
"Wrst": 55.12,
"StDev": 8.87
}]
}}
有关所有受支持的选项,请参见手册页:
<>在具有多路径路由的更复杂的环境中,您可能要考虑<强>都柏林TraceRouth< <强>()而不是MTR。同样,输出是JSON格式的,因此您可以很容易地解析跃点。预期的输出是什么?正是我上面发布的MTR。我实际上在一个类似的项目中。你有一个服务器部分和一个头版。通信是通过WebSocket进行的,可以添加RESTAPI等其他解决方案。现在我正在实现持久化生成的数据。最终目标是在浏览器中安装类似ping绘图仪的东西。