2013-11-04 3 views
0

SNMP에 익숙하지 않고 OID를 설정하기 때문에 조금만 나와주세요.SNMP가 정수로 숫자를 표시하도록하십시오.

rxkBps=`sar -n DEV 1 295 | tail -n1 | awk '{print $5}'` 
rxMbps=$(echo "scale=2;$rxkBps/128" | bc -l) 
echo $rxMbps >./rxMbps.log 
exit 

그 숫자는 소수 (: 0.06 전은) 항상 : 나는 로그 파일 (한 예)에 SAR의 값을 가지고 그들을 배치 두 개의 스크립트가 있습니다. 은 snmpd.conf에서
는 나는이 예제 Get_rxMbps에 해당 번호를 취하고에 의해 표현의 OID와 연관 두 스크립트에 대한 섹션을 확장 추가했습니다 :

extend Get_rxMbps /bin/sh /usr/local/bin/Get_rxMbps.sh 

내가 NET-의 SNMP 통해 snmpwalk를 실행 EXTEND-MIB :: nsExtendObjects 정보를 얻었지만 문자열로 보았고 모니터링 소프트웨어가 문자열 정보를 변환하거나 사용할 수 없습니다.

NET-SNMP-EXTEND-MIB::nsExtendCommand."Get_rxMbps" = STRING: /bin/sh 
NET-SNMP-EXTEND-MIB::nsExtendArgs."Get_rxMbps" = STRING: /usr/local/bin/Get_rxMbps.sh 
NET-SNMP-EXTEND-MIB::nsExtendInput."Get_rxMbps" = STRING: 
NET-SNMP-EXTEND-MIB::nsExtendCacheTime."Get_rxMbps" = INTEGER: 5 
NET-SNMP-EXTEND-MIB::nsExtendExecType."Get_rxMbps" = INTEGER: exec(1) 
NET-SNMP-EXTEND-MIB::nsExtendRunType."Get_rxMbps" = INTEGER: run-on-read(1) 
NET-SNMP-EXTEND-MIB::nsExtendStorage."Get_rxMbps" = INTEGER: permanent(4) 
NET-SNMP-EXTEND-MIB::nsExtendStatus."Get_rxMbps" = INTEGER: active(1) 
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."Get_rxMbps" = STRING: .83 
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."Get_rxMbps" = STRING: .83 
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."Get_rxMbps" = INTEGER: 1 
NET-SNMP-EXTEND-MIB::nsExtendResult."Get_rxMbps" = INTEGER: 0 
NET-SNMP-EXTEND-MIB::nsExtendOutLine."Get_rxMbps".1 = STRING: .83 

나는 이것에 새로 온 사람이 나뿐만 아니라 그것을 위해 열려있어 더 좋은 방법입니다,하지만 난 볼 정수가 아닌 문자열로 해당 번호를 사용하는 SNMP가 필요합니다 그래서 만약 다른 사람의 작품을 상속 .

+0

SNMP가 어떤 종류의 소수점 (또는 부동 소수점) 숫자도 지원하지 않는다는 것을 아는 것은 흥미로운 일입니다. 아마도 BER에서 인코딩이 복잡하기 때문일 수 있습니다. 그 점을 감안할 때 10 진수를 문자열로 보내는 것이 전적으로 적합하다고 생각합니다. 그것은 수신기 끝에서 변환해야합니다. – Jolta

답변

0

유형은 해당 파일의 작성자가 아니면 수정하면 안되는 MIB 파일에 정의되어 있습니다.

(적어도 내 snmpwalk 명령) 인용되고 당신은 옵션 -OQ을 전달하여 형식 정보를 제거 snmpwalk, snmpget과 유사한 명령을 말할 수 있지만 여전히 문자열로 이어질 것입니다.

모니터링 소프트웨어를 채택하거나 SNMP 출력을 스크립트를 통해 전달하여 문자열 유형 정보를 적절히 변환하거나 제거하는 것이 좋습니다.

+0

모니터링 소프트웨어를 조정할 수 없으며 액세스 또는 능력이 없습니다. 그리고 파이썬을 통해이 정보를 전달하더라도 int로 선언하면 문자열로 읽습니다. –

관련 문제