2014-03-30 57 views
0

我从使用NET-SNMP的路由器中检索CDP neighboor的十六进制格式IP地址。但是,我得到了一些奇怪的东西。任何帮助?谢谢在python中打印十六进制字符串格式变量

+1

你需要提供更多的细节:你使用的代码和你收到的东西。 – alecxe

+0

根据[RFC 3416](https://tools.ietf.org/html/rfc3416)我认为IP地址IPv4地址存储为4个八位字节。您可能会获取IP地址的打包二进制字符串值。尝试通过'import binascii运行“怪异的东西”; print binascii.hexlify(weird_thing)'。 – 2014-03-30 07:11:49

+0

很酷。有效。谢谢 – user3477490

回答

1

正如alecxe提到的那样,您在提问时确实需要提供更多细节。幸运的是,我已经使用了Python的NET-SNMP绑定,并且已经知道你在说什么。

要将从NET-SNMP绑定接收的二进制数据转换为十六进制表示,请使用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