在使用 easysnmp
读取设备时,有时候数据解析出现乱码。例如要获取设备的 VRID
号,就遇到如下的乱码:
# !/usr/bin/env python3
# -*- coding: UTF-8 -*-
from easysnmp import snmp_walk
def get_vrid():
vrid_data = snmp_walk(
oids='1.3.6.1.2.1.68.1.3.1.2',
hostname='you ip address',
community='you device community',
version=2
)
for vrid in vrid_data:
print(f'vrid: {vrid} \t value:{vrid.value}')
解决方法也很简单,只需要在设置 snmp
时添加 use_sprint_value=True
参数即可。
# !/usr/bin/env python3
# -*- coding: UTF-8 -*-
from easysnmp import snmp_walk
def get_vrid():
vrid_data = snmp_walk(
oids='1.3.6.1.2.1.68.1.3.1.2',
hostname='you ip address',
community='you device community',
version=2,
use_sprint_value=True # 设置 use_sprint_value 为 True
)
for vrid in vrid_data:
print(f'vrid: {vrid} \t value:{vrid.value}')
不过要注意的是,如果 use_sprint_value
设置为 True
, snmp
有可能会以非规范格式返回某些数据类型,数据有可能并不是 sprint_value
函数库格式化的 get
和 getnext
方法的返回值。