使用php将MTR结果转换为json

使用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-

我正在创建一个工作系统,在这个系统中,我们的多个位置都有虚拟机,我将有一个中心页面,您可以在其中输入IP,它将从远程MTR中提取所有MTR并转储结果

我认为实现这一点的最佳方法是调用远程服务器上的一个页面,该页面将启动MTR,然后以Json提供结果

我正在努力解决的问题是如何将MTR中的不同值和指标分解为JSON数组中的不同对象。我考虑过regex,但我觉得这是一种更好的方式。感谢所有的帮助

示例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绘图仪的东西。