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

Imágen de perfil
Val: 2.239
Plata
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

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


Python

Publicado el 24 de Noviembre del 2015 por Xve (294 códigos)
2.972 visualizaciones desde el 24 de Noviembre del 2015
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
2.973 visualizaciones desde el 24 de Noviembre del 2015
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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3354