MIBS 환경 변수가 정의될 ​​때 snmpget 출력이 다른 이유는 무엇입니까?

MIBS 환경 변수가 정의될 ​​때 snmpget 출력이 다른 이유는 무엇입니까?
$ 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)

mibs가 로드되면 snmpget값을 해석하는 방법을 알고 있습니다.


귀하의 질문의 특별한 경우에 mibs는 "해당 값을 문자열로 표시"라고 말합니다.

답변2

좀 더 구체적으로 말하자면.

MIB 문서가 없으면 SNMP 도구는 프로토콜 자체에서 정의한 매우 기본적인 데이터 유형만 알려줄 수 있습니다.

  • 정수
  • 옥텟 문자열
  • 없는
  • 객체 식별자
  • IP 주소
  • 카운터32
  • 게이지32
  • TimeTicks
  • 불투명체
  • NetAddress
  • 카운터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))

따라서 MIB 문서를 로드하기 위해 NET-SNMP 명령을 요청하면 snmpget의 데이터 유형을 완전히 인식 LongDisplayString하고 인쇄합니다 ACTIVE.

따라서 관찰 가능한 유일한 변화는 인용문일 뿐이며 그 뒤에서 많은 일이 발생합니다.

관련 정보