Advertisement
juliozaco

dhcp_nuevos

Jun 9th, 2011
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.37 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import poplib, smtplib, datetime, os
  4.  
  5. from email.Parser import Parser
  6. from email.mime.text import MIMEText
  7. from email.mime.image import MIMEImage
  8. from email.mime.multipart import MIMEMultipart
  9. from email.MIMEBase import MIMEBase
  10. from email import Encoders
  11.  
  12. def mandaemail(user,passw,smtp,aquien,subject,texto,adjunto):
  13.     msg = MIMEMultipart()
  14.  
  15.     textomsg=MIMEText(texto)
  16.     msg['Subject']=subject
  17.     msg['From']=user
  18.     msg['To']=aquien
  19.     msg.attach(textomsg)
  20.  
  21.     if adjunto<>"":
  22.         part = MIMEBase('application', "octet-stream")
  23.         part.set_payload( open(adjunto,"rb").read() )
  24.         Encoders.encode_base64(part)
  25.         (directorio, fichero) = os.path.split(adjunto)
  26.         part.add_header('Content-Disposition', 'attachment; filename="%s"'
  27.                             % fichero)
  28.         msg.attach(part)
  29.  
  30.     smtp=smtplib.SMTP(smtp)
  31.     smtp.login(user,passw)
  32.  
  33.     smtp.sendmail(msg['From'],msg['To'],msg.as_string())
  34.     smtp.close()
  35.  
  36. def dhcp_log():
  37.     # el nombre del fichero log dhcp a pelo
  38.     ruta = r'c:\windows\system32\dhcp'
  39.     dia = datetime.datetime.now().strftime('%a')
  40.     return ruta + '\DhcpSrvLog-' + dia + '.log'
  41. #
  42. fic_dhcp_hoy = dhcp_log()
  43. fic_fichados = 'dchp_fichados.txt'
  44. dic={}
  45. email=1
  46. haynuevo=0
  47. texnuevo=''
  48. # Id., fecha, hora, descripción, dirección IP, nombre de host, dirección MAC
  49. # cagemos id = 11 que tiene la mac
  50.  
  51. # leemos todos los pc que tenemos grabados
  52. if os.path.exists(fic_fichados):
  53.     fic_abre_fichados = open(fic_fichados,"r")
  54.     lista=fic_abre_fichados.readlines()
  55.     for cada in lista:
  56.         cadena=cada.split(chr(9))[:-1]
  57.         if len(cadena)>0:
  58.             dic[cadena[0]]=cada[:-1]
  59.     fic_abre_fichados.close()
  60.  
  61. # vemos los pcs asignados del log dhcp
  62. if os.path.exists(fic_dhcp_hoy):
  63.     fic_abre_dhcp_hoy = open(fic_dhcp_hoy,"r")
  64.     for row in fic_abre_dhcp_hoy.readlines():
  65.         fila=row.split(",")
  66.         try:
  67.             pc = fila[5]
  68.             mac = fila[6]
  69.             ip = fila[4]
  70.         fecha = fila[1]
  71.             hora = fila[2]
  72.             id = fila[0]
  73.         except:
  74.             continue
  75.         if pc <> ''  and not pc in dic:
  76.             if id=='11':
  77.                 dic[pc] = pc + chr(9) + ip + chr(9) + mac + chr(9) + fecha + chr(9) + hora
  78.                 haynuevo += 1
  79.                 texnuevo = texnuevo + pc.split(".")[0] + '+'
  80.  
  81. # grabamos nueva lista pcs grabados
  82. if haynuevo>0:
  83.     fic_abre_fichados = open(fic_fichados,"w")
  84.     ordenado=sorted(dic.items())
  85.     for cada in ordenado:
  86.         fic_abre_fichados.write(dic[cada [0]] + '\n' )
  87.     fic_abre_fichados.close()
  88.     # mandamos email de aviso
  89.     if email>0:
  90.         asunto = 'dhcp_nuevos_'+str(haynuevo)
  91.         texto = texnuevo
  92.         adjunto = fic_fichados
  93.         aquien=destinatario
  94.         mandaemail(remitente,remitente_contraseña,servidor_smtp,aquien,asunto,texto,adjunto)
  95.          
  96. exit()
  97.  
  98.  
  99. '''
  100.                    Registro de actividad del servicio DHCP de Microsoft
  101.  
  102.  
  103. ID de suceso  Significado
  104. 00        Se inició el registro.
  105. 01        Se detuvo el registro.
  106. 02        Se pausó temporalmente el registro debido a la falta de espacio en disco.
  107. 10        Se concedió una nueva dirección IP a un cliente.
  108. 11        Un cliente renovó la concesión.
  109. 12        Un cliente liberó la concesión.
  110. 13        Se encontró una dirección IP en uso en la red.
  111. 14        No se pudo atender una solicitud de concesión debido a que
  112.          se agotó el conjunto de direcciones del ámbito.
  113. 15        Se denegó una concesión.
  114. 16        Se eliminó una concesión.
  115. 17        Caducó una concesión.
  116. 20        Se concedió una dirección BOOTP a un cliente.
  117. 21        Se concedió una dirección dinámica BOOTP a un cliente.
  118. 22        No se pudo atender una solicitud de BOOTP debido a que
  119.          se agotó el conjunto de direcciones del ámbito para BOOTP.
  120. 23        Se eliminó una dirección BOOTP IP después de comprobar
  121.          que no estaba en uso.
  122. 24        Se ha iniciado la operación de eliminación de direcciones IP.
  123. 25        Estadísticas de eliminación de direcciones IP.
  124. 30        Solicitud de actualización de DNS para el servidor DNS nombrado
  125. 31        Error de actualización de DNS
  126. 32        Actualización correcta de DNS
  127. 50+      Los códigos superiores a 50 se usan para información de detección de servidores Rogue.
  128. '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement