python snmp switch port state


# -*- coding:utf-8 -*-

import re
import os
import time
import platform
import sys
import importlib,sys
importlib.reload(sys)

def snmpWalk(ip,oid):
    result = os.popen('snmpwalk -v 2c -c' + ' ' + 'public' + ' ' + ip + ' ' + oid).read().split('\n')[:-1]
    # result1 = os.popen('snmpwalk -v 2c -c' + ' ' + 'public' + ' ' + '192.168.34.231' + ' ' + '.1.3.6.1.2.1.1.1.0').read().stript()
    # result = ('snmpwalk -v 2c -c' + 'public' + '' + '192.168.34.231' + ' ' + '.1.3.6.1.2.1.1.1.0')
    return result

def getPortDevices(ip,oid):
    device_mib = snmpWalk(ip,oid)
    device_list = []
    for item in device_mib:
        device_list.append(item.split(':')[3].strip())
    return device_list

def getPortStatus(ip,oid):
    device_mib = snmpWalk(ip,oid)
    device_list = []
    for item in device_mib:
        device_list.append(re.search('\w+',item.split(':')[3].strip()).group())
    return device_list

def main():
    with open('ip.text','r',encoding='utf-8') as pf:
        for ip in pf:
            port_full_state = []
            all_switch_informaiton = {}
            ip = ip.strip()
            print(ip)
            device_port = getPortDevices(ip,'ifDescr')
            # print(len(device_port))
            device_port_statue = getPortStatus(ip,'ifOperStatus')
            # print(len(device_port_statue))
            for item in zip(device_port,device_port_statue):
                port_full_state.append(item)
            all_switch_informaiton['ip'] = ip
            all_switch_informaiton['port'] = port_full_state
            with open('output.text', 'a') as f:
                f.write(str(all_switch_informaiton))
                f.write('\n')
                f.close()
        pf.close()
        print(all_switch_informaiton)

if __name__ == '__main__':
    main()

猜你喜欢

转载自blog.51cto.com/zhangfang526/2482535