1

SNMP、MIBS、および OIDS を含むプロジェクトに取り組んでいます。

補遺: OID を数値形式ではなく、名前に変換したいと考えています。サーバーへのリモートアクセスしかありません。

LINUX ターミナルPHP 関数を使用すると、2 つの異なる OID 形式が得られます

これが私がすることです:

  1. LINUX ターミナルで次のように入力します。

    snmpwalk -v 1 -c public ip | less
    

出力はこれに似ています(短いバージョン) ここに画像の説明を入力

  1. PHPの使用

    <?php
    
    $session = new SNMP(SNMP::VERSION_1, ipaddress, "public");
    $session->oid_output_format = SNMP_OID_OUTPUT_FULL;
    $result = $session->walk("");
    print_r($result);
    
    ?>
    

出力は以下のとおりです ここに画像の説明を入力

問題: Linux ターミナル形式と同様の形式を php で取得するにはどうすればよいですか?

MAYBE: PHP の snmpwalk() が OID を返す形式を変更する、LINUX ターミナルから実行できるコマンドはありますか ???

4

1 に答える 1

2

Php は、歩いている MIB について知っている必要があります。そうしないと、OID を変数名に変換できません。名前やタイプなどは、MIB ファイルで定義されます。

現在、テストする php インスタンスにアクセスすることはできませんが、ドキュメントによると、MIB ファイルがあればこの例は機能するはずです。

snmp_read_mib('./FOO-BAR-MIB.txt');
print_r(snmprealwalk('localhost', 'public', 'FOO-BAR-MIB::someTable');

次のようなものを出力する必要があります

[FOO-BAR-MIB::someTable.0] => Gauge32: 6

MIB ファイルがない場合は、運が悪いです。機器ベンダーから取得するか、OID を Web 検索してください。

編集:明確にするために:そのOIDを定義するMIBファイルがなければ、数値OIDを変数名に変換する方法はありません。ローカル マシンに MIB ファイルがない場合は、そこに移動する方法を見つける必要があります。この質問も参照してください。

于 2014-09-18T15:32:46.503 に答える