Feb-27-2018, 11:10 AM
Hi All,
This script is polling Router/Switch interfaces through SNMP, any suggestion to reduce code line, specially function calling.
This script is polling Router/Switch interfaces through SNMP, any suggestion to reduce code line, specially function calling.
#!/usr/bin/python from pysnmp.entity.rfc3413.oneliner import cmdgen import sys import re device=[] x = "172.21.160.3" community="readvsnl" interface = [] int_name=[] int_oid=[] try: cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd( cmdgen.CommunityData(community), cmdgen.UdpTransportTarget((x, 161)), '1.3.6.1.2.1.2.2.1.2', ) for varBindTableRow in varBindTable: for name, val in varBindTableRow: if 'Null' in val: # Remove Null interface continue elif 'Vlan' in val: # Remove Vlan Interface continue else: int_oid.append(name) int_name.append(val) except Exception as excp: print("some thing went wrong") int_admin=[] admin='' cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd( cmdgen.CommunityData(community), cmdgen.UdpTransportTarget((x, 161)), '1.3.6.1.2.1.2.2.1.7', ) for varBindTableRow in varBindTable: for name, val in varBindTableRow: admin_raw=val.prettyPrint() if '1' in admin_raw: admin = 'UP' elif '2' in admin_raw: admin = 'DOWN' elif '3' in admin_raw: admin = 'TESTING' int_admin.append(admin) int_oper=[] oper='' cmdGen = cmdgen.CommandGenerator() errorIndication, errorStatus, errorIndex, varBindTable = cmdGen.nextCmd( cmdgen.CommunityData(community), cmdgen.UdpTransportTarget((x, 161)), '1.3.6.1.2.1.2.2.1.8', ) for varBindTableRow in varBindTable: for name, val in varBindTableRow: oper_raw=val.prettyPrint() if '1' in oper_raw: oper = 'UP' elif '2' in oper_raw: oper = 'DOWN' elif '3' in oper_raw: oper = 'TESTING' elif '4' in oper_raw: oper = 'UNKNOWN' elif '5' in oper_raw: oper = 'DORMANT' elif '6' in oper_raw: oper = 'NOT-PRESENT' elif '7' in oper_raw: oper = 'LOWER-LAYER-DOWN' int_oper.append(oper) for i in range(len(int_name)): print("{}\t {}\t {}\t {}\t {}".format(x,int_oid[i],int_name[i],int_oper[i],int_admin[i]))
Output:172.21.160.3 1.3.6.1.2.1.2.2.1.2.1 FastEthernet0/1 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.2 FastEthernet0/2 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.3 FastEthernet0/3 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.4 FastEthernet0/4 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.5 FastEthernet0/5 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.6 FastEthernet0/6 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.7 FastEthernet0/7 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.8 FastEthernet0/8 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.9 FastEthernet0/9 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.10 FastEthernet0/10 DOWN UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.11 FastEthernet0/11 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.12 FastEthernet0/12 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.13 FastEthernet0/13 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.14 FastEthernet0/14 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.15 FastEthernet0/15 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.16 FastEthernet0/16 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.17 FastEthernet0/17 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.18 FastEthernet0/18 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.19 FastEthernet0/19 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.20 FastEthernet0/20 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.21 FastEthernet0/21 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.22 FastEthernet0/22 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.23 FastEthernet0/23 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.24 FastEthernet0/24 DOWN DOWN
172.21.160.3 1.3.6.1.2.1.2.2.1.2.25 GigabitEthernet0/1 UP UP
172.21.160.3 1.3.6.1.2.1.2.2.1.2.26 GigabitEthernet0/2 DOWN UP