Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
    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]")
Beispiel #4
0
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
Beispiel #5
0
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()
Beispiel #6
0
 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
Beispiel #7
0
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
Beispiel #8
0
def get_manager(sessiondata):
	sess = SNMP.new_session(sessiondata)
	dev = ExtremeManager(sess)
	dev.add_mibs(MIBS)
	return dev
Beispiel #9
0
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