2014-03-30 3 views
0

NET-SNMP를 사용하여 라우터에서 CDP neighboor의 16 진수 문자열 형식 IP 주소를 가져옵니다. 그러나, 나는 대신 뭔가 이상한 것을 얻는다. 어떤 도움이 필요합니까? 고마워요파이썬에서 16 진수 형식의 변수 인쇄하기

+1

자세한 내용은 사용중인 코드와받은 내용을 제공해야합니다. – alecxe

+0

Per [RFC 3416] (https://tools.ietf.org/html/rfc3416) IPAddress의 IPv4 주소가 4 옥텟으로 저장되어 있다고 생각합니다. IP 주소에 대해 압축 된 바이너리 문자열 값을 반환하는 중일 수 있습니다. "이상한 일"을'import binascii; print binascii.hexlify (이상한)'. –

+0

차가움. 그것은 효과가 있었다. 감사합니다 – user3477490

답변

1

alecxe 언급했듯이 질문 할 때 더 자세한 내용을 제공해야합니다. 다행스럽게도 Python 용 NET-SNMP 바인딩을 사용했으며 이미 무엇을 말하고 있는지 알고 있습니다.

NET-SNMP 바인딩에서받은 이진 데이터를 16 진수 표현으로 변환하려면 Python binascii 모듈을 사용하십시오. b2a_hex 기능이 당신이 찾고있는 기능입니다.

다음은 대부분 메모리에서 가져온 것이므로 정확하지 않을 수 있지만 생각이들 정도로 가깝습니다.

import netsnmp 
import binascii 

session = netsnmp.Session(Community='public', DestHost='myagentip', Version=1) 
vbwithbinarydata = netsnmp.VarBind('oid_to_binary_data') 
varlist = netsnmp.Varlist(vbwithbinarydata) 
session.get(varlist) 
print binascii.b2a_hex(vbwithbinarydata.val) 
+0

고맙습니다. 신은 컴퓨터 과학자를 축복한다! – user3477490

관련 문제