当前位置 博文首页 > python实现数通设备端口监控示例

    python实现数通设备端口监控示例

    作者:admin 时间:2021-07-03 18:42

    最近因工作需要,上面要求,每天需上报运维的几百数通设备端口使用情况【】,虽然有现成网管监控工具监控设备状态,但做报表,有点不方便,特写了个小脚本。

    注:测试运行于ubuntn,需安装snmpwalk工具,

    目标数通设备,需做好相关snmp配置

    复制代码 代码如下:

    #/usr/bin/python
    #coding:utf-8

    import os,sys
    import re
    from pprint import pprint

    #甯歌鍘傚鏁伴?氳澶嘙IB鍊?
    MIB = {
       'public':{
            'ports':{
               'string':'.1.3.6.1.2.1.2.2.1.2',
               'status':'.1.3.6.1.2.1.2.2.1.8',   #2 down
           }
        },
       'huawei':{

       },
       'cisco':{
       }
    }
    #绔彛鐘舵?佽浆鎹?
    def portStatus(_s):
        if int(_s)==2:
            return 'down'
        elif int(_s)==1:
            return 'up'
        else:
            return 'none'

    #鎵ц绯荤粺鍛戒护snmpwalk璋冪敤
    def snmpwalk(host,publicKey,iso):
        return [i.strip() for i in os.popen('/usr/bin/snmpwalk -c %s  -v 2c %s %s'%(publicKey,host,iso)).readlines()]

    def getPorts(_ip,_public,option):
        if option == 'ports':
            postsString = (j.split('=')[1].split(':')[1].replace('"','').strip() for j in snmpwalk(_ip,_public,MIB['public']['ports']['string']))
            postsStatus = (int(j.split('=')[1].split(':')[1].strip()) for j in snmpwalk(_ip,_public,MIB['public']['ports']['status']))
            return zip(postsString,postsStatus)
        else:
            print('on this commmnad')

    publicKey = 'hi'  #sunmp public key

    HOSTS={
        '10.221.98.2':{'type':'switch','origin':'quidway','public':publicKey},
        '10.221.98.3':{'type':'switch','origin':'quidway','public':publicKey},
        '10.221.97.108':{'type':'firewall','origin':'h3c','public':publicKey},
        '10.231.98.233':{'type':'switch','origin':'cisco','public':publicKey},
    }
    if __name__ == '__main__':
        for i in HOSTS.keys():
            for host,status in getPorts(i,HOSTS[i]['public'],'ports'):
                print("%s\t%s\t%s"%(i,host.ljust(30),portStatus(status).ljust(20)))
            print(''.ljust(50,'#'))

    运行结果

    复制代码 代码如下:

    root@ubuntn12:/tmp# python snmpwalk.py
    10.221.98.2     InLoopBack0                     up                 
    10.221.98.2     NULL0                           up                 
    10.221.98.2     GigabitEthernet0/0/0            down               
    10.221.98.2     Aux0/0/1                        down               
    10.221.98.2     Vlanif100                       up                 
    10.221.98.2     Eth-Trunk1                      down               
    10.221.98.2     Eth-Trunk1.32                   down               
    10.221.98.2     Eth-Trunk1.50                   down               
    10.221.98.2     Eth-Trunk1.60                   down               
    10.221.98.2     Eth-Trunk1.70                   down               
    10.221.98.2     Eth-Trunk1.80                   down               
    10.221.98.2     Eth-Trunk1.100                  down               
    10.221.98.2     Eth-Trunk1.110                  down    

    jsjbwy
    下一篇:没有了