2017-04-21 7 views
0

私は、複数の場所を中心にVMSを作成し、IPを入力できる中央ページを用意し、リモートからすべてのMTRSを取得します結果をダンプします。PHPを使ってjsonにMTRする

私は

私の問題だ、JSON形式で結果を提供し、その後MTRを開始しますリモートサーバー上のページへの呼び出しを行うことが、これを達成するための最良の方法を考えていると思っていますMTRのさまざまな値とメトリックをJSON配列のさまざまなオブジェクトに分割する方法が苦労しています。私は正規表現を考慮したが、それはより良い方法でなければならないように感じる。 ALIヘルプは高く評価されています。

例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 
+0

期待される出力は何ですか? – revo

+0

私は上記のMTRを正確に掲載しました。 –

答えて

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 
    }] 
}} 

はサポートされているすべてのオプションについては、manページを参照してください:マルチパスルーティングを持って、より複雑な環境でhttps://www.mankier.com/8/mtr#-j

を、あなたではなく、MTRよりもダブリンのTraceroutehttps://dublin-traceroute.netを)検討する必要があります。ここでも出力はJSONになっているので、ホップを解析するのは簡単です。

関連する問題