Skip to content

Instantly share code, notes, and snippets.

@juliobm
Created May 5, 2015 10:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save juliobm/2e064a3ea4b33bbcf735 to your computer and use it in GitHub Desktop.
Save juliobm/2e064a3ea4b33bbcf735 to your computer and use it in GitHub Desktop.
Detectar y avisar de procesos nuevos en los puestos de nuestra red
import os,shutil,re,sys
import poplib,os,sys,subprocess,time,datetime
import urllib
from envia_email import mandaemail
#
equipo=os.getenv('COMPUTERNAME')
servidores='server1,server2,server3,server4,server5'
grupo='/node:'+servidores
namelista=r'procesos_grupo_'+servidores.replace(',','_')+'_lista.txt'
dic={}
email=1
haynuevo=0
texnuevo=''
# leemos todos los procesos que tenemos grabados
if os.path.exists(namelista):
flista=open(namelista,"r")
lista=flista.readlines()
for cada in lista:
cadena=cada.split(chr(9))[:-1]
if len(cadena)>0:
dic[cadena[0]]=cada
flista.close()
# vemos los procesos actuales
sentencia='tasklist /fo csv'
sentencia='wmic '+grupo+' process get name,commandline /format:csv'
pid4 = subprocess.Popen(sentencia,shell=False,stdout=subprocess.PIPE) # con esto esperamos a que termine antes de seguir con el siguiente
for row in pid4.stdout.readlines():
fila=row.split(",")
try:
proceso=fila[0]+'-->'+fila[2][:-3]
except:
continue
proceso=proceso.replace('"','')
if not proceso in dic:
#print proceso
tipo=''
descripcion=''
dic[proceso]=proceso+chr(9)+datetime.datetime.now().strftime('%d/%m/%Y %H:%M')+chr(9)+fila[1]+chr(9)+descripcion+'\n'
haynuevo+=1
texnuevo=texnuevo+proceso+'+'
# grabamos nueva lista
if haynuevo>0:
flista=open(namelista,"w")
ordenado=sorted(dic.items())
for cada in ordenado:
#print dic[cada[0]][:-1]
flista.write(dic[cada[0]])
flista.close()
# mandamos email de aviso
if email>0:
asunto='nuevoprocesos_GRUPO_'+str(haynuevo)
texto=texnuevo
adjunto=namelista
mandaemail("remitente","passw","smtp",['destinatario'],asunto,texto,adjunto)
fich_log =open("ftp_cada_5m_do_log.txt","a+")
fich_log.write('fin procesos_grupo '+ str(datetime.datetime.now()) + '\n')
fich_log.close()
exit()
#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment