def docheckapagado(host): ahora=datetime.datetime.today() #Ver si hay que mandar emails, siempre que traiga informacion configuracion=Config(cdb) configuracion.loadConfig() if (configuracion.alert_apagado==1): enviar_mensaje=False ultimos_estados=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time, limitby=(0, 2)).as_list() #Si hay algun estado anterior.... miramos si ha pasado de encendido->apagado. if len(ultimos_estados)>0 : #Si el ultimo vale 0, estaba apagado. if (ultimos_estados[0]["raton"]=="0"): if len(ultimos_estados)>1: #Si hay penultimo #Si no vale 0, estaba encendido y ahora apagado. Hay que avisar de que está apagado. if (ultimos_estados[1]["raton"]!="0"): enviar_mensaje=True else: #Si no hay penúltimo, avisamos de que está apagado. enviar_mensaje=True if enviar_mensaje: mensaje="El thinclient "+host+" parece apagado o bloqueado ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n" configuracion.enviaMail('Aviso de thinclient '+host+" apagado", mensaje) return "OK"
def doactualizahost(host,tipohost,ultimoarranque,ultimopkgsync,estadopaquetes): ahora=datetime.datetime.today() fila=cdb((cdb.maquinas.host==host) & (cdb.maquinas.tipohost==tipohost)).select().last() if fila==None: if estadopaquetes!='': cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque, ultimopkgsync=ultimopkgsync,estadopaquetes=estadopaquetes) else: cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque) else: if fila.alert==1 and fila.ultimoarranque.strftime("%Y-%m-%d %H:%M")!=ultimoarranque[0:16]: # Si está activada la alerta para ese host y es un nuevo arranque, se envia el mensaje de correo de alerta de encendido. # Para ver si es un nuevo arranque, comparamos las fechas de ultima arranque, desechando los segundos. configuracion=Config(cdb) configuracion.loadConfig() mensaje="Alerta: ha sido encendido el host monitorizado "+host+" con fecha "+ahora.strftime("%d/%m/%Y %H:%M")+"\n" configuracion.enviaMail("Encendido de "+host, mensaje) if estadopaquetes!='': fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimopkgsync=ultimopkgsync, ultimoarranque=ultimoarranque, estadopaquetes=estadopaquetes) else: fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimoarranque=ultimoarranque) return "OK"
def doactualizahost(host,tipohost,ultimoarranque,ultimopkgsync,estadopaquetes): ahora=datetime.datetime.today() fila=cdb((cdb.maquinas.host==host) & (cdb.maquinas.tipohost==tipohost)).select().last() if fila==None: if estadopaquetes!='': cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque, ultimopkgsync=ultimopkgsync,estadopaquetes=estadopaquetes) else: cdb.maquinas.insert(host=host,tipohost=tipohost,ultimorefresco=ahora,ultimoarranque=ultimoarranque) else: if fila.alert==1 and fila.ultimoarranque.strftime("%Y-%m-%d %H:%M")!=ultimoarranque[0:16]: # Si está activada la alerta para ese host y es un nuevo arranque, se envia el mensaje de correo de alerta de encendido. # Para ver si es un nuevo arranque, comparamos las fechas de ultima arranque, desechando los segundos. configuracion=Config(cdb) configuracion.loadConfig() mensaje="Alerta: ha sido encendido el host monitorizado "+host+" con fecha "+ahora.strftime("%d/%m/%Y %H:%M")+"\n" configuracion.enviaMail("Encendido de "+host, mensaje) if estadopaquetes!='': fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimopkgsync=ultimopkgsync, ultimoarranque=ultimoarranque, estadopaquetes=estadopaquetes) else: fila.update_record(ultimorefresco=ahora, tipohost=tipohost, ultimoarranque=ultimoarranque) return "OK"
def docheckapagado(host): ahora=datetime.datetime.today() #Ver si hay que mandar emails, siempre que traiga informacion configuracion=Config(cdb) configuracion.loadConfig() if (configuracion.alert_apagado==1): enviar_mensaje=False ultimos_estados=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time, limitby=(0, 2)).as_list() #Si hay algun estado anterior.... miramos si ha pasado de encendido->apagado. if len(ultimos_estados)>0 : #Si el ultimo vale 0, estaba apagado. if (ultimos_estados[0]["raton"]=="0"): if len(ultimos_estados)>1: #Si hay penultimo #Si no vale 0, estaba encendido y ahora apagado. Hay que avisar de que está apagado. if (ultimos_estados[1]["raton"]!="0"): enviar_mensaje=True else: #Si no hay penúltimo, avisamos de que está apagado. enviar_mensaje=True if enviar_mensaje: mensaje="El thinclient "+host+" parece apagado o bloqueado ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n" configuracion.enviaMail('Aviso de thinclient '+host+" apagado", mensaje) return "OK"
def sendTestMail(): configuracion = Config(cdb) configuracion.loadConfig() return configuracion.enviaMail( 'Desde controlies', 'Este es un mensaje enviado desde Controlies. Si le ha llegado es que todo esta correcto.' )
def doactualizathinclient(host, raton, teclado): ahora=datetime.datetime.today() #Ver si hay que mandar emails, siempre que traiga informacion configuracion=Config(cdb) configuracion.loadConfig() if (raton=="1" or teclado=="1") and (configuracion.alert_teclado==1 or configuracion.alert_raton==1): #Busca ultimo estado que no sea "apagado", para comparar ultimo_estado=cdb((cdb.thinclients.host==host) & (cdb.thinclients.raton!="0") ).select(orderby=~cdb.thinclients.time).first() if ultimo_estado==None: ult_teclado="2" ult_raton="2" else: ult_teclado=ultimo_estado.teclado ult_raton=ultimo_estado.raton if (teclado=="1" and ult_teclado=="2" and configuracion.alert_teclado==1) or (raton=="1" and ult_raton=="2" and configuracion.alert_raton==1): mensaje="Aviso fallo teclado/ratón en thinclient "+host+" ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n" est_teclado="Conectado" if teclado=="2" else "Desconectado" est_raton="Conectado" if raton=="2" else "Desconectado" mensaje=mensaje+"\tTeclado: "+est_teclado+"\n" mensaje=mensaje+"\tRaton: "+est_raton+"\n" configuracion.enviaMail('Aviso de thinclient '+host, mensaje) fila=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time).first() if fila==None: cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado) else: if fila.raton == "0": hora1=fila.time hora2=ahora diferencia=hora2-hora1 if diferencia.seconds > 300 : #Si han pasado mas de 5 minutos es otro encendido cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado) else: fila.update_record(time=ahora, raton=raton, teclado=teclado) else: cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado) return "OK"
def doactualizathinclient(host, raton, teclado): ahora=datetime.datetime.today() #Ver si hay que mandar emails, siempre que traiga informacion configuracion=Config(cdb) configuracion.loadConfig() if (raton=="1" or teclado=="1") and (configuracion.alert_teclado==1 or configuracion.alert_raton==1): #Busca ultimo estado que no sea "apagado", para comparar ultimo_estado=cdb((cdb.thinclients.host==host) & (cdb.thinclients.raton!="0") ).select(orderby=~cdb.thinclients.time).first() if ultimo_estado==None: ult_teclado="2" ult_raton="2" else: ult_teclado=ultimo_estado.teclado ult_raton=ultimo_estado.raton if (teclado=="1" and ult_teclado=="2" and configuracion.alert_teclado==1) or (raton=="1" and ult_raton=="2" and configuracion.alert_raton==1): mensaje="Aviso fallo teclado/ratón en thinclient "+host+" ("+ahora.strftime("%d/%m/%Y %H:%M")+")\n\n" est_teclado="Conectado" if teclado=="2" else "Desconectado" est_raton="Conectado" if raton=="2" else "Desconectado" mensaje=mensaje+"\tTeclado: "+est_teclado+"\n" mensaje=mensaje+"\tRaton: "+est_raton+"\n" configuracion.enviaMail('Aviso de thinclient '+host, mensaje) fila=cdb(cdb.thinclients.host==host).select(orderby=~cdb.thinclients.time).first() if fila==None: cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado) else: if fila.raton == "0": hora1=fila.time hora2=ahora diferencia=hora2-hora1 if diferencia.seconds > 300 : #Si han pasado mas de 5 minutos es otro encendido cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado) else: fila.update_record(time=ahora, raton=raton, teclado=teclado) else: cdb.thinclients.insert(host=host,time=ahora,raton=raton,teclado=teclado) return "OK"
def sendTestMail(): configuracion=Config(cdb) configuracion.loadConfig() return configuracion.enviaMail('Desde controlies', 'Este es un mensaje enviado desde Controlies. Si le ha llegado es que todo esta correcto.')