如何将FC交换机的MIB输出解析为OID?

时间:2014-11-03 12:00:00

标签: python parsing python-2.7 snmp mib

我试图从FC交换机表中找到特定的WWN地址,以获取端口ID并更改管理状态(我已经拥有WWN地址)。 我使用SNMP返回WWN表,我得到这样的输出:

      In [39]: netsnmp.snmpwalk('.1.3.6.1.4.1.9.9.297.1.1.16.1.2',Version = 2,DestHost = 'lab-fc',Community = 'public')

      Out[39]:('P\x01C\x80\x18j\xc3\x88\x10\x08\x00\x01')

如何将此输出转换为OID号?

1 个答案:

答案 0 :(得分:1)

netsnmp库返回一个八位字节字符串,它本质上是二进制的。根据端口ID的Cisco definition,前8个字节是WWN。

import netsnmp
import struct
import binascii

portid = netsnmp.snmpwalk('.1.3.6.1.4.1.9.9.297.1.1.16.1.2',Version = 2,DestHost = 'lab-fc',Community = 'public')
print ''.join(binascii.hexlify(i) for i in struct.unpack_from('cccccccc', s))

输出

'50014380186ac388'

这看起来像是正确的WWN吗?