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)