Código de Python - Obtener el listado de archivos modificados en nuestro servidor Linux

Imágen de perfil

Obtener el listado de archivos modificados en nuestro servidor Linuxgráfica de visualizaciones


Python

Publicado el 24 de Noviembre del 2015 por xve
951 visualizaciones desde el 24 de Noviembre del 2015. Una media de 21 por semana
Este script de Python, revisa todos los archivos de las carpetas que indiquemos, devolviéndonos todos los archivos modificados o añadidos durante las ultimas 24 horas, y nos envía la lista a nuestra dirección de correo con archivo adjunto.

También nos envía un df -h adjuntado al correo, indicando los espacios utilizados en cada uno de nuestras particiones.

Requerimientos

Realizado con Python 2.7

Utiliza la función find de Linux que viene en todas las distribuciones.
Utiliza la librería smtplib para enviar los correos.

Para que se ejecute diariamente, podemos crear un archivo denominado /etc/cron.d/getNewFiles con la siguiente linea en su interior para que realice el test cada día antes de medianoche.
1
59 23 * * * root /usr/bin/python /root/getNewFiles.py

Versión 1.0

Publicado el 24 de Noviembre del 2015gráfica de visualizaciones de la versión: Versión 1.0
952 visualizaciones desde el 24 de Noviembre del 2015. Una media de 21 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
"""
script que envia por correo todos los archivos modificados durante el ultimo dia
en una o varias carpetas

http://www.lawebdelprogramador.com

/etc/cron.d/file
59 23 * * * root /usr/bin/python /root/getNewFiles.py
"""
 
import commands,os
 
import smtplib
 
from email.Utils import make_msgid
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
 
from time import gmtime, strftime
import sys
 
 
### Definimos las variables
 
# Indicamos las carpetas a revisar
folders=[
    "/home/usuario1",
    "/home/usuario2"
    ]
 
# Indicamos las extensiones a no incluir en el listado (".xml",".jpg", ...)
extension=[".xml",".jpg", ".png",".gif"]
 
# servidor smtp (Si no deseamos enviar por correo, no indicar el servidor de correo)
mailServer="midominio.com"
# usuario de validacion en el servidor smtp
mailUser="micorreo@midominio.com"
# contraseña del usuario smtp
mailPas="micontraseñaDelCorreo"
 
# nombre del usuario que realiza el envio
mailFrom_Name="getNewFiles"
# direccion de correo de quien realiza el envio... puede ser el mismo que el
# del destinatario
mailFrom_Mail="correoDelQuienEnvia@dominio.com"
 
# lista de correos donde se enviara el resultado
mailsTo=["usuario1@domino.com","usuario2@dominio2.com",]
 
text="Archivos modificados el día anterior...\n\n"
textF=""
 
### excepciones
grepExtension=""
if len(extension):
	for i in extension:
		grepExtension+=i+"$" if grepExtension=="" else "|"+i+"$"
grep="" if grepExtension=="" else "| egrep -iv '%s'" % grepExtension
 
### Ejecutamos el find
 
for folder in folders:
    if os.path.exists(folder):
        execute='find %s -mtime -1 %s | sort' % (folder,grep)
        textF+="\n\n\n\n"+execute+"\n---------------------\n"
        textF+=commands.getoutput(execute)
    else:
        text+="\n\n\n\nERROR\npath %s doesn't exists\n\n\n\n" % folder
 
text+="\n\n\n\n"+commands.getoutput('df -h')
 
### Enviamos el resultado al correo
 
if mailServer:
    try:
        # Conectamos con el servidor smtp
        s = smtplib.SMTP(mailServer)
        s.login(mailUser,mailPas)
 
        # Generamos el texto del contenido del correo
        part1 = MIMEText(text, 'plain', 'UTF-8')
 
        part2 = MIMEBase('text', 'plain')
        part2.set_payload(textF)
        part2.add_header('Content-Disposition', 'attachment', filename="list.txt")
 
        for mailTo in mailsTo:
            # Create message container - the correct MIME type is multipart/alternative.
            msg = MIMEMultipart('alternative')
            msg.set_charset("UTF-8")
            msg['Subject'] 		= "[getNewFiles - hostalia] %s" % strftime("%Y%m%d %H:%M:%S")
            msg['From'] 		= "%s <%s>" % (mailFrom_Name, mailFrom_Mail)
            msg['To'] 			= mailTo
            msg['Date'] 		= strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())
            msg['Message-ID']	= "<%s@%s>" % (make_msgid()[1:].split('@')[0],mailFrom_Mail.split('@')[1])
 
            msg.attach(part1)
            msg.attach(part2)
 
            # enviamos el correo
            s.sendmail(mailFrom_Mail, mailTo, msg.as_string())
 
    except Exception,e:
        print e
        print "---------------------------------"



Comentarios sobre la versión: Versión 1.0 (0)


No hay comentarios
 

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s3354