Oct-24-2019, 11:03 AM
Hi All,
this is my first script with python class. Thanks all forum admin.
I have few questions
1) is it good practice to have multiple class in single script?
2) how can i return converted values within class?
3) Guide me for improvement
this is my first script with python class. Thanks all forum admin.
I have few questions
1) is it good practice to have multiple class in single script?
2) how can i return converted values within class?
3) Guide me for improvement
from easysnmp import Session
import time
from datetime import datetime
import datetime
from collections import namedtuple
class fan:
def __init__(self,host,community,version,timeout):
self.host = host
self.community = community
self.version = version
self.timeout = timeout
def get_tmnxChassisFanSpeed(value):
FanSpeed = { '0':'Not Applicable',
'1':'Unknown',
'2':'Half Speed',
'3':'Full Speed',
'4':'Low Speed'
}
return FanSpeed.get(value,"other")
def get_fanstatus(value):
fanstatus = { '1':'Unknown',
'2':'Fan Removed',
'3':'Up',
'4':'Fail',
'5':'Out of Service'
}
return fanstatus.get(value,"other")
def get_fan_details(host):
try:
session = Session(hostname=host, community="cacti", version=2)
tmnxChassisNumFanTrays = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.3.1.10')
NumFanTrays = str(u"{value}".format(value=tmnxChassisNumFanTrays[0].value))
tmnxChassisNumFans = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.3.1.11')
NumFans = str(u"{value}".format(value=tmnxChassisNumFans[0].value))
tmnxChassisFanSpeed = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.4.1.3')
FanSpeed = str(u"{value}".format(value=tmnxChassisFanSpeed[0].value))
tmnxChassisFanOperStatus = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.4.1.2')
FanOperStatus = str(u"{value}".format(value=tmnxChassisFanOperStatus[0].value))
return NumFanTrays, NumFans, FanSpeed, FanOperStatus
except:
print("Unable to create SNMP session with - "+host)
class Chassis:
def __init__(self,host,community,version,timeout):
self.host = host
self.community = community
self.version = version
self.timeout = timeout
def get_tmnxHwAlarmState(value):
HwAlarmState = { '0':'Unknown',
'1':'Alarm Active',
'2':'Alarm Cleared'
}
return HwAlarmState.get(value,"other")
def get_tmnxChassisOverTempState(value):
ChassisOverTempState = {'1':'Ok',
'2':'Over Temp'
}
return ChassisOverTempState.get(value,"other")
def cnvrt_dateTime(val1):
date = datetime.datetime.strptime(val1, '%m%d%Y').strftime('%m/%d/%Y')
return date
def time_ticks_conversion(timeticks):
converted_ticks = datetime.datetime.now() + datetime.timedelta(microseconds = int(timeticks)/10)
return converted_ticks.strftime("%Y-%m-%d %H:%M:%S")
def conv2(data):
Record = namedtuple('Record',
"year month day hour minutes seconds deciseconds "
"direction hoursfromutc minutesfromutc")
L = [ord(x) for x in data]
L[:2] = [256 * L[0] + L[1]]
L[7] = chr(L[7])
manfdate = Record(*L)
manufactured_date=str(manfdate[0])+'/'+str(manfdate[1])+'/'+str(manfdate[2])+' '+str(manfdate[3])+':'+str(manfdate[4])
return manufactured_date
def get_ChassisInfo(host):
try:
session = Session(hostname=host, community="cacti", version=2)
tmnxChassisTypeName = session.get('1.3.6.1.4.1.6527.3.1.2.2.1.6.1.2.20')
ChassisTypeName = str(u"{value}".format(value=tmnxChassisTypeName.value))
tmnxChassisNumSlots = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.3.1.7')
ChassisNumSlots = str(u"{value}".format(value=tmnxChassisNumSlots[0].value))
tmnxChassisNumPorts = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.3.1.8')
ChassisNumPorts = str(u"{value}".format(value=tmnxChassisNumPorts[0].value))
tmnxChassisOverTempState = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.3.1.24')
ChassisOverTempState = str(u"{value}".format(value=tmnxChassisOverTempState[0].value))
tmnxHwBaseMacAddress = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.29')
HwBaseMacAddress = ':'.join('{:02x}'.format(ord(x)) for x in tmnxHwBaseMacAddress[0].value)
tmnxHwMfgBoardNumber = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.4')
HwMfgBoardNumber = str(u"{value}".format(value=tmnxHwMfgBoardNumber[0].value))
tmnxHwCLEI = session.walk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.11')
HwCLEI = str(u"{value}".format(value=tmnxHwCLEI[0].value))
tmnxHwSerialNumber = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.5')
HwSerialNumber = str(u"{value}".format(value=tmnxHwSerialNumber[0].value))
tmnxHwTemperature = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.18')
HwTemperature = str(u"{value}".format(value=tmnxHwTemperature[0].value))
tmnxHwSwLastBoot = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.22')
HwSwLastBoot = str(u"{value}".format(value=tmnxHwSwLastBoot[0].value))
tmnxHwAlarmState = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.24')
HwAlarmState = str(u"{value}".format(value=tmnxHwAlarmState[0].value))
tmnxHwManufactureDate = session.bulkwalk('1.3.6.1.4.1.6527.3.1.2.2.1.8.1.6')
HwManufactureDate = str(u"{value}".format(value=tmnxHwManufactureDate[0].value))
return ChassisTypeName,ChassisNumSlots,ChassisNumPorts,ChassisOverTempState,HwBaseMacAddress,HwMfgBoardNumber,\
HwCLEI,HwSerialNumber,HwTemperature,HwSwLastBoot,HwAlarmState,HwManufactureDate
except:
print("Unable to create SNMP session with - "+host)
if __name__ == "__main__":
fandetails = fan.get_fan_details('10.124.209.66')
NumFanTrays = fandetails[0]
NumFans = fandetails[1]
Fanspeed = fan.get_tmnxChassisFanSpeed(fandetails[2])
FanStatus = fan.get_fanstatus(fandetails[3])
print('Num Of Tray:{} Number of Fans: {} Fan Speed:{} Fan Status:{}'.format(NumFanTrays,NumFans,Fanspeed,FanStatus))
chasisdata = Chassis.get_ChassisInfo('10.124.209.66')
print('ChassisType:{} ChassisNumSlots:{} ChassisNumPorts:{} ChassisOverTempState:{} HwBaseMacAddress:{} HwMfgBoardNumber:{} HwCLEI:{}\
HwSerialNumber:{} HwTemperature:{} HwSwLastBoot:{} HwAlarmState:{} HwManufactureDate:{}'.format(chasisdata[0],chasisdata[1],\
chasisdata[2],Chassis.get_tmnxChassisOverTempState(chasisdata[3]),chasisdata[4],chasisdata[5],chasisdata[6],chasisdata[7].strip(),\
chasisdata[8],Chassis.conv2(chasisdata[9]),Chassis.get_tmnxHwAlarmState(chasisdata[10]),Chassis.cnvrt_dateTime(chasisdata[11])))
#print(chasisdata)
