zoukankan      html  css  js  c++  java
  • 使用Python进行snmp操作

    摘自https://www.cnblogs.com/lisenlin/p/10491681.html

    Python模块之snmp-cmds,easysnmp

     

    一、简介

    snmp-cmds模块通过SNMP与目标设备进行通信,此模块适用于windows,此模块是基于系统已安装了net-snmp环境
    easysnmp模块通过SNMP与谬表设备进行通信,此模块用于linux,此模块基于系统已安装了net-snmp环境

    二、snmp-cmds模块安装

      2.1 在Windows平台

    复制代码
    #1.系统环境安装net-snmp软件
     a.下载链接: https://pan.baidu.com/s/1sq4mjIMfFgG2YxTMLxVF0A 提取码: a7j5
     b.安装完成,打开cmd命令框,输入snmpwalk,无报错,有回显,即安装正常
     
    #2.使用pip工具安装snmp-cmds模块
       pip3 install snmp-cmds
      
    复制代码

      2.2 在Centos 7平台

    复制代码
    #1.系统环境安装net-snmp软件
     a.yum install python-devel
     b.安装setuptools
        wget https://files.pythonhosted.org/packages/25/5d/cc55d39ac39383dd6e04ae80501b9af3cc455be64740ad68a4e12ec81b00/setuptools-0.6c11-py2.7.egg
     c.安装net-snmp-5.7.3软件
        wget https://sourceforge.net/projects/net-snmp/files/net-snmp/5.7.3/net-snmp-5.7.3.tar.gz
     d.提升setuptools为可执行文件
         chmod +x setuptools-0.6c11-py2.7.egg
     e. ./setuptools-0.6c11-py2.7.egg
     f.  tar -zxvf net-snmp-5.7.3.tar.gz
     g.  cd net-snmp-5.7.3
     h.  ./configure --with-python-modules     #选择版本时,输入2,其余直接回车
     i. make (时间较长)
     j. make install
     k. echo "/usr/local/lib" >> /etc/ld.so.conf
     l. ldconfig
     m. 验证,是否有snmpwalk命令
     
     
    #2.使用pip工具安装snmp-cmds模块
       pip3 install easysnmp
    
    ps:easysnmp官方文档地址:https://easysnmp.readthedocs.io/en/latest/
    复制代码

    三、简单实例

      3.1 获取目标设备的接口名字

    复制代码
    from snmp_cmds import snmpwalk
    #返回结果是列表
    res = snmpwalk(ipaddress='192.168.59.251',oid='IF-MIB:ifDescr',community='qiji123')
    
    for line in res:
        #第一个元素为oid,第二个元素为接口名字
        print(line[0],'     ',line[1])
    复制代码

      3.2 使用pysnmp模块案例

    复制代码
    from easysnmp import snmp_walk
    
    device_ip = 'IP地址'
    community = '团体字'
    # oid = 'IF-MIB::ifDescr'
    oid = 'sysDescr'
    
    def test():
        res = snmp_walk(oid, hostname=device_ip, community=community, version=2)
    
        for each in res:
            print(each.value)
         
    if __name__ == '__main__':
        test()
    复制代码

  • 相关阅读:
    dijkstra 为什么不能解决负权边?
    Asteroids poj3041
    Dining poj3281
    炮兵阵地
    玉米田Corn Fields
    互不侵犯
    Golang---内存管理(内存分配)
    单例模式-Singleton
    HTTP2.0 学习
    Golang---GMP调度策略
  • 原文地址:https://www.cnblogs.com/fyly/p/10831075.html
Copyright © 2011-2022 走看看