![MIBS 環境変数が定義されている場合、snmpget 出力が異なるのはなぜですか?](https://rvso.com/image/782622/MIBS%20%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0%E3%81%8C%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%80%81snmpget%20%E5%87%BA%E5%8A%9B%E3%81%8C%E7%95%B0%E3%81%AA%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
$ export MIBS=
$ snmpget -Oqv -v 2c -c public 10.xxx.yyy.zzz .1.3.6.1.4.1.3375.2.1.14.3.2.0
"ACTIVE"
しかし
$ export MIBS=F5-BIGIP-SYSTEM-MIB
$ snmpget -Oqv -v 2c -c public 10.xxx.yyy.zzz .1.3.6.1.4.1.3375.2.1.14.3.2.0
ACTIVE
MIBS 環境変数に値がある場合、出力に違いが生じるのはなぜですか?
答え1
SNMP mib は SNMP OID のデータ型を定義するため、MIB をロードすると、生の値を表示するのではなく、値の「フォーマットされた」バージョンを表示できます。
たとえば、次のものを比較します。
MIBS= snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.3.1
iso.3.6.1.2.1.2.2.1.3.1 = INTEGER: 24
と:
$ snmpget -v2c -c public 192.168.1.1 1.3.6.1.2.1.2.2.1.3.1
IF-MIB::ifType.1 = INTEGER: softwareLoopback(24)
mib がロードされると、snmpget
値をどのように解釈するかを認識します。
あなたの質問の特定のケースでは、MIBS は「その値を文字列として表示する」と述べています。
答え2
もう少し詳しく言うと。
MIBドキュメントがなければ、SNMPツールはプロトコル自体で定義された非常に基本的なデータタイプしか伝えることができません。
- 整数
- オクテット文字列
- ヌル
- オブジェクト識別子
- IPアドレス
- カウンター32
- ゲージ32
- タイムティック
- 不透明
- ネットアドレス
- カウンター64
データは ASN.1 BER でエンコードされているため、デコード アルゴリズムは、ネットワーク上の生のバイトからこのようなデータ タイプを抽出できます。
したがって、MIB ドキュメントなしで NET-SNMP のsnmpget
コマンドを実行すると、データは単に OCTET STRING としてデコードされ、 として印刷されます"ACTIVE"
。
ただし、SMI v1 または v2 の MIB ドキュメントでは、いわゆる「テキスト規約」を介して、このような基本型に基づいてカスタマイズされたデータ型を定義できます。この場合、MIB ドキュメントはF5-BIGIP-SYSTEM-MIB
オブジェクトを.1.3.6.1.4.1.3375.2.1.14.3.2
以下のように定義します。
sysCmFailoverStatusStatus OBJECT-TYPE
SYNTAX LongDisplayString
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The failover status on the system."
::= { sysCmFailoverStatus 2 }
実際のデータ型LongDisplayString
はF5-BIGIP-COMMON-MIB
、
LongDisplayString ::= TEXTUAL-CONVENTION
DISPLAY-HINT "1024a"
STATUS current
DESCRIPTION "A longer version of SNMPv2-TC::DisplayString."
SYNTAX OCTET STRING (SIZE (0..1024))
したがって、NET-SNMPsnmpget
コマンドに MIB ドキュメントをロードするように要求すると、このコマンドは のデータ型を完全に認識しLongDisplayString
、 を出力しますACTIVE
。
つまり、目に見える唯一の変更は引用符だけですが、舞台裏では多くのことが起こっていることがわかります。