SNMP OID 1.3.6.1.2.1.1.3.0 计算出来的启动时间,与设备显示的不一致
时间: 2023-10-04 11:10:14 浏览: 225
SNMP OID 1.3.6.1.2.1.1.3.0返回的是设备最近一次启动的时间,以秒为单位。但是,在设备重启之前,SNMP代理可能不会将其启动时间更新为最新的时间,从而导致SNMP OID 1.3.6.1.2.1.1.3.0返回的时间与设备实际显示的不一致。可以尝试重新启动SNMP代理或设备本身,然后再次查询此OID以获取最新的启动时间。如果问题仍然存在,可能需要进一步调查设备的SNMP代理配置和运行情况。
相关问题
snmpwalk获取oid数值
SNMP(Simple Network Management Protocol)是一种基于IP网络的协议,用于管理网络设备和诊断网络问题。SNMPwalk是一种SNMP操作,可以获取一个或多个OID的值,并显示它们的完整路径。下面是获取OID数值的步骤:
1. 打开命令行界面,输入snmpwalk命令,后跟目标设备的IP地址和OID号,如:snmpwalk -v 2c -c public 192.168.1.1 1.3.6.1.2.1.1.3.0
2. 等待一段时间,直到程序返回目标设备的OID信息。
3. 读取输出的信息,其中包括每个OID的值。
需要注意的是,snmpwalk命令需要有正确的SNMP配置信息,如community字符串等。此外,如果目标设备开启了SNMP安全模式,还需要提供正确的安全凭据才能成功执行SNMPwalk操作。
如何使用Python的SNMP库对网络设备进行SNMP协议的访问,获取设备的基本信息和状态并存为json格式。请给出代码并解释
您好,以下是使用Python的SNMP库对网络设备进行SNMP协议的访问,获取设备的基本信息和状态并存为json格式的代码及解释:
```python
import json
from pysnmp.hlapi import *
# 设置要访问的设备IP地址、SNMP版本、团体名和OID信息
device_ip = '10.1.1.1'
snmp_version = SNMPVersion.community
community = CommunityData('public', mpModel=0)
oid_dict = {
'sysDescr': '1.3.6.1.2.1.1.1.0',
'sysUpTime': '1.3.6.1.2.1.1.3.0',
'sysContact': '1.3.6.1.2.1.1.4.0',
'sysName': '1.3.6.1.2.1.1.5.0',
'ifIndex': '1.3.6.1.2.1.2.2.1.1',
'ifDescr': '1.3.6.1.2.1.2.2.1.2',
'ifType': '1.3.6.1.2.1.2.2.1.3',
'ifMtu': '1.3.6.1.2.1.2.2.1.4',
'ifSpeed': '1.3.6.1.2.1.2.2.1.5',
'ifPhysAddress': '1.3.6.1.2.1.2.2.1.6',
'ifOperStatus': '1.3.6.1.2.1.2.2.1.8',
'ifInOctets': '1.3.6.1.2.1.2.2.1.10',
'ifOutOctets': '1.3.6.1.2.1.2.2.1.16',
}
# 构建OID列表
oid_list = [ObjectType(ObjectIdentity(oid_dict[key])).loadMibs('IF-MIB') for key in oid_dict]
# 发起SNMP协议访问并获取设备信息
result = {}
iterator = getCmd(SnmpEngine(), community, UdpTransportTarget((device_ip, 161)), ContextData(),
*oid_list, lookupMib=True)
for snmp_index, snmp_value in iterator:
for oid, value in snmp_value:
oid_str = str(oid)
value_str = str(value)
if oid_str in oid_dict.values():
for key in oid_dict:
if oid_dict[key] == oid_str:
if key == 'ifPhysAddress':
value_str = ':'.join([f"{c:02x}" for c in value])
result[snmp_index] = {**result.get(snmp_index, {}), key: value_str}
# 存为json格式
json_str = json.dumps(result, indent=4, sort_keys=True)
print(json_str)
```
代码说明:
1. 首先引入了json和pysnmp.hlapi库
2. 然后设置要访问的设备IP地址、SNMP版本、团体名和OID信息
3. 构建OID列表,这里使用了IF-MIB模块,因此需要先加载该模块
4. 发起SNMP协议访问并获取设备信息,使用了pysnmp库的getCmd接口,遍历返回结果,将获取到的值存入result字典中
5. 最后将结果以json格式进行输出
这样,就可以通过Python实现对网络设备进行SNMP协议的访问,获取设备的基本信息和状态,并且存为json格式。
阅读全文