Python 将MAC转换为aa:bb:cc:dd:11:22

Python 将MAC转换为aa:bb:cc:dd:11:22,python,hex,snmp,net-snmp,Python,Hex,Snmp,Net Snmp,我正在创建一个SNMP程序来列出设备的接口(带有ip、掩码和mac)。我正在使用NetSnmp获取macaddress,但输出如下('\x00PV\xaf\x00v',) 这是SNMP请求: oidmac = netsnmp.Varbind("ifPhysAddress."+i) mac = netsnmp.snmpget( oidmac, Version = 2, DestHost = sys.argv[2],

我正在创建一个SNMP程序来列出设备的接口(带有ip、掩码和mac)。我正在使用NetSnmp获取macaddress,但输出如下('\x00PV\xaf\x00v',)

这是SNMP请求:

    oidmac = netsnmp.Varbind("ifPhysAddress."+i)

    mac = netsnmp.snmpget(
        oidmac, 
        Version = 2, 
        DestHost = sys.argv[2], 
        Community = sys.argv[1])
关于代码的信息

  • sys.argv[1]
    =社区字符串
  • sys.argv[2]
    =SNMP代理的IP
  • i
    =具有接口ID的变量

如何将字符串转换为格式为
aa:bb:cc:dd:11:22
的MAC地址

在Python2中,它非常简单

>>> ":".join(x.encode('hex') for x in '\x00PV\xaf\x00v')
'00:50:56:af:00:76'
对于Python3,您可以尝试以下内容

>>> "{:02x}:{:02x}:{:02x}:{:02x}:{:02x}:{:02x}".format(*b'\x00PV\xaf\x00v')
'00:50:56:af:00:76'

如果您想要大写十六进制代码,请使用
:02X
(大写X)

Hellp John!我第一次在ipython中编辑了你的代码(我使用的是python2),它工作正常!然后我把它添加到我的代码中:mac2=“:”.join(x.encode('hex')代表mac中的x)我得到一个错误tho,它是:回溯(最近一次调用):文件“/program.py”,行37,在mac2=“:”.join(x.encode('hex')代表mac中的x)文件“/program.py”,行37,在mac2=“:”.join(x.encode('hex')')代表mac中的x)AttributeError:“NoneType”对象没有属性“encode”@JacobÅkerblom,字符串在迭代时不能有
None
。根据打印类型(mac),检查isMy变量mac是元组的类型。