0

私は現在、phpを使用したSNMPを介したスイッチのいくつかのプロパティを正常に読み取っています。今、私はAPIの結果として得られる出力を作成しsnmpgetsnmpwalk実際にAPIのコンシューマーに役立つようにすることを検討しています。

問題は、応答が次のようになっていることINTEGER: up(1)ですINTEGER: 10103

この応答形式を解析する方法に関する規則/標準はありますか、または読み取りしようとしている各デバイスに固有の応答ベンダーですか?

これらの応答をphpネイティブ変数にキャストできるPHPライブラリ、関数、または拡張機能、あるいは少なくとも私たちが使用できる便利なものはありますか?


アップデート:

私はいくつかの新しいことを発見しました。つまり、phpには、基本的にBERエンコードされた文字列であるバイナリASN.1文字列を解析できるライブラリがいくつかあるということです。問題は、phpを使用してデバイスからバイナリデータを取得する方法が見つからないように見えることです...

4

2 に答える 2

1

特定のPHPメソッドについてはわかりませんが、2つの例の違いはINTEGER、システムにOIDに対応するSNMP MIBがあるかどうかにある可能性があります(たとえば、1が「アップ」を意味することを確認するため)。

整数のみが必要な場合は、getまたはwalkコマンドにパラメーターを渡すことができるはずです。たとえば、net-snmpのsnmpgetまたはsnmpwalkコマンドは-Oe、シンボリックラベルを削除するために使用します。マンページから:

              $ snmpget -c public -v 1 localhost ipForwarding.0
              IP-MIB::ipForwarding.0 = INTEGER: forwarding(1)
              $ snmpget -c public -v 1 -Oe localhost ipForwarding.0
              IP-MIB::ipForwarding.0 = INTEGER: 1

net-snmpの出力を解析する場合は、snmpcmdのマニュアルページを読むことをお勧めします。このページには、特にタイムティックや文字列などの他のタイプの表示に関心のある出力オプションがたくさんあるからです。

PHPでSNMPを取得したい場合は、Cactiがどのように取得するかを確認できます。

于 2012-06-08T07:55:30.243 に答える
1

スクリプトの最初でこの関数を使用するだけです。

snmp_set_quick_print(TRUE);

先頭の「INTEGER」などを除いて、検索している値のみを返します;)

お役に立てれば !

于 2015-02-04T16:41:48.880 に答える