#!/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