def createPDFFile(port, comunityName, host): pdf = FPDF() pdf.add_page() pdf.set_font('Arial', 'B', 12) pdf.cell( 40, 10, 'Trabajando con el servidor ' + host + ":" + port + " - " + comunityName) pdf.ln() pdf.cell(40, 10, 'Equipo: x') pdf.ln() pdf.cell(40, 10, 'Integrantes:') pdf.ln() pdf.cell(40, 10, 'Frías Mercado Carlos Elliot') pdf.ln() pdf.cell(40, 10, '8/05/2019') pdf.ln() pdf.cell(40, 10, 'Información del equipo: ') pdf.ln() pdf.cell(40, 10, S.consultaStrSNMP(comunityName, host, C.SO_OID, port)) pdf.ln() pdf.cell( 40, 10, 'Número de interfaces: ' + S.consultaSNMP(comunityName, port, host, C.INTERFACE_OID)) pdf.ln() timeticks = int(S.consultaSNMP(comunityName, port, host, C.LIFETIME_OID)) / 6000 pdf.cell(40, 10, 'Tiempo de actividad: ' + str(timeticks) + " minutos") pdf.ln() addPDFImages(pdf) addServiceInfo(pdf) pdf.output("Evidencia" + ".pdf", 'F') return
def discover_snmp(community="public"): ids = {} sd = SNMP.sessionData("localhost") sd.add_community(community, SNMP.RO) for agent in get_hostlist(): sd.agent = agent try: s = SNMP.new_session(sd) rlist = s.get("1.3.6.1.2.1.1.2.0", "1.3.6.1.2.1.1.5.0") # sysObjectID, sysName ids[agent] = rlist except: ids[agent] = None return ids
def __init__(self, device, UPdate, OIDlist, db): threading.Thread.__init__(self) self.device = device # monitor self.protocolSNMP = SNMP() # protocolo de communicacion self.upDate = UPdate ## tiempo de actualizacion de los datos self.isConected = False # estado de conexion con el dsipositivo a conectar self.listOIDinfo = [ '1.3.6.1.2.1.1.1.0', '1.3.6.1.2.1.1.6.0', '1.3.6.1.2.1.1.4.0', '1.3.6.1.2.1.1.5.0' ] # OID de info del dispositivo self.monitoringUP = True self.OIDlist = OIDlist self.db = db self.pattern = re.compile("[Ll][Ii][Nn][Uu][Xx]")
class Monitoring(threading.Thread): def __init__(self, device, UPdate, state): self.device = device # device to monitoring self.protocolSNMP = SNMP() # protocolo de communicacion self.upDate = UPdate ## tiempo de actualizacion de los datos self.isConected = False # estado de conexion con el dsipositivo a conectar self.monitoringUP = state def setComunication(self): errorIndication, errorStatus, errorIndex, varBinds = self.protocolSNMP.sendRequest( self.device) return errorIndication, errorStatus, errorIndex, varBinds def statusConnection(self, errorIndication, errorStatus, errorIndex): errorInfo = None if errorIndication: self.isConected = False errorInfo = errorIndication elif errorStatus: self.isConected = False errorInfo = str( '%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) else: self.isConected = True return errorInfo def getInfo(self, varBinds): info = [] for varBind in varBinds: a, b = (' = '.join([x.prettyPrint() for x in varBind])).split('=') info.append(b) print(b) def startMonitoring(self): errorIndication, errorStatus, errorIndex, varBinds = self.setComunication( ) errorInfo = self.statusConnection(errorIndication, errorStatus, errorIndex) if self.isConected: self.getInfo(varBinds) def run(self): while self.isUP(): self.startMonitoring() time.sleep(self.getTimeUpDate()) def setTimeUpDate(self, time): self.upDate = time def getTimeUpDate(self): return self.upDate def setMonitoringUP(self, e): self.monitoringUP = e def isUP(self): return self.monitoringUP
def unicast_packets(argv, community="public"): """Display a set of strip charts, one for each set of parameters in argv. The set is a "host interface" pair. For example: device1 2 device2 4 """ win = gtk.Window(gtk.WINDOW_TOPLEVEL) win.set_title("Unicast Packets") vbox = gtk.VBox() vbox.show() win.add(vbox) argv = argv[1:] while argv: host = argv.pop(0) port = int(argv.pop(0)) sess = SNMP.get_session(host, community) graph = rtgraph.HScrollLineGraph( scrollRate = 2, pollInterval = 1000, size = (384,128), gridSize = 32, channels = [SNMPChannel(sess, mibs.IF_MIB.ifInUcastPkts, port, color=(1,0,0)), SNMPChannel(sess, mibs.IF_MIB.ifOutUcastPkts, port, color=(0,1,0))], bgColor = (0, 0, 0.3), gridColor = (0, 0, 0.5), range = (0, 3500), ) graph.show() frame = gtk.Frame() frame.set_label("device %s port %s" % (host, port)) frame.add(graph) frame.show() vbox.pack_end(frame) win.show() win.connect("destroy", gtk.mainquit) gtk.main()
def __init__(self, device, UPdate, state): self.device = device # device to monitoring self.protocolSNMP = SNMP() # protocolo de communicacion self.upDate = UPdate ## tiempo de actualizacion de los datos self.isConected = False # estado de conexion con el dsipositivo a conectar self.monitoringUP = state
def get_manager(sessiondata): sess = SNMP.new_session(sessiondata) dev = IPSXManager(sess) dev.add_mibs([mibs.SNMPv2_MIB, mibs.RFC1213_MIB, mibs.COSINE_GLOBAL_REG]) dev.add_mib(mibs.COSINE_ORION_MIB, orion_mangler, sys.modules[__name__]) return dev
def get_manager(sessiondata): sess = SNMP.new_session(sessiondata) dev = ExtremeManager(sess) dev.add_mibs(MIBS) return dev
class Monitoring(threading.Thread): def __init__(self, device, UPdate, OIDlist, db): threading.Thread.__init__(self) self.device = device # monitor self.protocolSNMP = SNMP() # protocolo de communicacion self.upDate = UPdate ## tiempo de actualizacion de los datos self.isConected = False # estado de conexion con el dsipositivo a conectar self.listOIDinfo = [ '1.3.6.1.2.1.1.1.0', '1.3.6.1.2.1.1.6.0', '1.3.6.1.2.1.1.4.0', '1.3.6.1.2.1.1.5.0' ] # OID de info del dispositivo self.monitoringUP = True self.OIDlist = OIDlist self.db = db self.pattern = re.compile("[Ll][Ii][Nn][Uu][Xx]") def setComunication(self, listOID): errorIndication, errorStatus, errorIndex, varBinds = self.protocolSNMP.sendRequest( self.device, listOID) return errorIndication, errorStatus, errorIndex, varBinds def statusConnection(self, errorIndication, errorStatus, errorIndex): errorInfo = None if errorIndication: self.isConected = False errorInfo = errorIndication elif errorStatus: self.isConected = False errorInfo = str( '%s at %s' % (errorStatus.prettyPrint(), errorIndex and varBinds[int(errorIndex) - 1][0] or '?')) else: self.isConected = True return errorInfo def getInformation(self, varBinds): info = [] for varBind in varBinds: a, b = (' = '.join([x.prettyPrint() for x in varBind])).split('=') info.append(b) return info def getInformationDevice(self, listOID): data = None errorIndication, errorStatus, errorIndex, varBinds = self.setComunication( listOID) errorInfo = self.statusConnection(errorIndication, errorStatus, errorIndex) if self.isConected: data = self.getInformation(varBinds) else: print(errorInfo) return data ## esta es la funcion donde monitorea def startMonitoring(self): infoSystem = self.getInformationDevice(self.listOIDinfo) if infoSystem: # print(infoSystem) self.upDateInfoDevice( infoSystem ) ## actualizacion de la informacion del dispositivo se actualiza la base de datos infoOID = self.getInformationDevice( self.OIDlist) # informacioin de las mib a monitorizar if infoSystem: print("dato " + str(infoOID)) ## este es la dato que nececitas ########################################################################### CPU_info = float(infoOID[0]) valor = "N:" + str(CPU_info) print(valor) ret = rrdtool.update('trend.rrd', valor) rrdtool.dump('trend.rrd', 'trend.xml') time.sleep(1) if ret: print(rrdtool.error()) time.sleep(300) ############################################################################ def run(self): while self.isUP(): self.startMonitoring() time.sleep(self.getTimeUpDate()) def upDateInfoDevice( self, infoSystem): # funcion que actualiza la info del sistema system = self.setSystem(infoSystem[0]) self.db.upDateDevice(self.device.getIP(), system, infoSystem[1], infoSystem[2], infoSystem[3]) def setSystem(self, info): system = None if self.pattern.search(info): system = 'Linux' else: system = 'Windodws' return system def setTimeUpDate(self, time): self.upDate = time def getTimeUpDate(self): return self.upDate def setMonitoringUP(self, e): self.monitoringUP = e def isUP(self): return self.monitoringUP