snmp协议与python调用snmp获取数据

一.snmp协议简介
简单网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议。
snmp是一种应用层协议。它的传输层协议一般采用UDP。
SNMP网络架构由三部分组成:NMS(网络管理站)、Agent(代理)、MIB(管理信息库)
一个SNMP管理的网络由3部分构成:

  1. 网络管理系统(NMS,Network-management systems)
  2. 被管理的设备(managed device)
  3. 代理者(agent)。
    物理实体角度架构如下所示:
    snmp协议与python调用snmp获取数据_第1张图片
    使用SNMP对网络进行管理应包含:至少一台管理工作站(NMS,Network Management Station)或主机,一个或多个代理(Agent)设备,或者其中还包括代理服务器(Proxy) 。

NMS:该实体能够产生协议命令、接收通告消息;位于管理系统的顶层。在实际的网络管理中至少包含一个这样的SNMP实体。

Agent:该实体能够响应管理节点的请求、主动产生通告消息;位于管理系统的底层。在实际的网络管理中可以存在一个或多个这样的实体。

Proxy Agent:某些情况下,如不同(子)网络间,不同版本间的通信,还存在一种特殊的代理。它用于实现SNMP请求和告警信息的转发,不同版本协议间的转换、翻译等功能。在这些情况下,Proxy对NMS是透明的,它位于管理系统的中间层。
二.snmp使用简单介绍
查看snmp版本命令

snmpd -v

snmp协议与python调用snmp获取数据_第2张图片

调用snmp查看管理的设备的信息

snmpwalk -v 2c -c CDRCB_RO 80.1.25.74 1.3.6.1.2.1.2.2.1.5

其中CDRCB_RO为团体字;oid1.3.6.1.2.1.1.1为设备型号oid。
结果如下:

 snmpwalk -v 2c -c CDRCB_RO 80.2.25.140 1.3.6.1.2.1.1.1
SNMPv2-MIB::sysDescr.0 = STRING: Hillstone Security Appliance SG-6000-E3960

获取本机名字

snmpwalk -v 2c -c CDRCB_RO 80.2.25.140 sysName

运行结果为:

snmpwalk -v 2c -c CDRCB_RO 80.2.25.140 sysName
SNMPv2-MIB::sysName.0 = STRING: QY4_WY_A16_SG6000_FW1

获取接口带宽:

snmpwalk -v 2c -c CDRCB_RO 80.1.25.74 1.3.6.1.2.1.2.2.1.5

获得如下数据:
snmp协议与python调用snmp获取数据_第3张图片

python调用snmp协议获取接口带宽并对结果进行处理。代码如下

import os
import time
community = "CDRCB_RO"
admin_ip = "80.1.25.74"
rate ="1.3.6.1.2.1.2.2.1.5"
snmp_order = "snmpwalk -v 2c -c {} {} {}".format(community, admin_ip, rate)
result_device = os.popen(snmp_order).read().split("\n")
for i in range(len(result_device) - 1):
    if "Such Instance" in result_device[0]:
        pass
    else:
        res = int(result_device[i].split(": ")[-1])/1048576
        rates = str(res) + "M"
        print rates

snmp协议与python调用snmp获取数据_第4张图片

你可能感兴趣的:(计算机网络,Python,python,网络,http)