You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python执行SNMP查询获取指定IP对应OID的日期值

Python实现SNMP批量查询OID并导出CSV方案

前置依赖安装

首先安装SNMP操作所需的第三方库:

pip install pysnmp

完整实现代码

你可以直接参考以下代码调整参数使用:

from pysnmp.hlapi import *
import csv

# 配置项,可根据实际情况修改
TARGET_OID = '1.3.6.1.4.1.318.1.1.1.2.2.4.0'
SNMP_COMMUNITY = 'public'  # SNMP v2c团体字,按需修改
SNMP_PORT = 161
IP_LIST_PATH = 'ip_list.txt'  # 存IP的输入文件路径,每行一个IP
OUTPUT_CSV_PATH = 'snmp_query_result.csv'  # 结果输出路径

def snmp_get_date(ip):
    # 执行SNMP GET查询
    errorIndication, errorStatus, errorIndex, varBinds = next(
        getCmd(SnmpEngine(),
               CommunityData(SNMP_COMMUNITY),
               UdpTransportTarget((ip, SNMP_PORT), timeout=2, retries=1),
               ContextData(),
               ObjectType(ObjectIdentity(TARGET_OID)))
    )
    # 异常处理
    if errorIndication:
        return f"查询错误:{errorIndication}"
    elif errorStatus:
        return f"响应错误:{errorStatus.prettyPrint()}"
    else:
        # 返回OID对应的值,转为字符串格式
        return str(varBinds[0][1])

if __name__ == '__main__':
    # 读取IP列表,过滤空行
    with open(IP_LIST_PATH, 'r', encoding='utf-8') as f:
        ip_list = [line.strip() for line in f if line.strip()]
    
    # 批量查询并收集结果
    result = []
    for ip in ip_list:
        date_val = snmp_get_date(ip)
        result.append([ip, date_val])
    
    # 写入CSV文件
    with open(OUTPUT_CSV_PATH, 'w', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(['IP地址', '设备返回日期'])
        writer.writerows(result)
    print(f"查询完成,结果已写入{OUTPUT_CSV_PATH}")

注意事项

  • 输入的ip_list.txt需要每行放一个独立的IP地址,不要加多余符号
  • 目标设备必须开启SNMP服务,且允许脚本运行的主机访问,团体字、SNMP版本参数需要和设备配置一致
  • 如果需要使用SNMP v3,可修改CommunityData部分为对应的v3认证配置即可
  • 脚本默认设置了2秒超时、1次重试,你可以根据网络情况调整UdpTransportTarget里的参数

内容的提问来源于stack exchange,提问作者Blue8

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 05:39:05