ELO-330: Programación de Sistemas
Tarea 1: Monitor de Cambio en Directorio
Nombres: mcd : monitor de cambio de archivo permite
alertar vía email cuando un directorio ha cambiado.
Sintaxis: mcd <segundos> <directorio>
segundos: es un número entero que representa cada cuántos
segundos se revisa por cambios.
directorio: es el directorio en cuestión que se desea monitorizar
Descripción
Es común desear enviar un correo en
forma automática. Todos sabemos hacerlo a través de un
cliente de correo, pero ¿Cómo podemos hacerlo a
través de un programa? Hace un tiempo bastaba usar telnet al
puerto 25 y enviar algunos comandos del protocolo SMTP. Hoy por
seguridad esa opción no es permitida. Por ejemplo antes se
podía enviar correo y el sistema nunca pedía usuario y
clave de quien lo enviaba. Esos servidores de correo inseguros hoy son
puestos en listas negras.
Por otra parte es común desear tomar conocimiento
del cambio de estado de algún servicio o componente de un
sistema. Para ello se debe desarrollar un sistema que monitorice ese
estado y ante un cambio informe. En esta tarea su grupo
explorará el cambio de un directorio; es decir, si algún
archivo cambia de nombre, es borrado, agregado, cambia de fecha,
tamaño, permisos, etc.
mcd es un script bash
que periódicamente revisa si hay cambios en el directorio
señalado desde el momento en que el script parte. Al detectar un
cambio,
envía un correo señalando la diferencia producida en el
directorio y termina.
Tan pronto es ejecutado, mcd pide por consola:
"Ingrese el servidor smtp utilizar:"
"Ingrese el puerto donde éste escucha:"
"Ingrese la cuenta email desde donde se enviará la alerta:"
"Ingrese la password en formato codificado base64:"
"Ingrese la cuenta email donde enviará la alerta:"
Luego el mcd recuerda el estado actual del directorio y trabaja
hasta detectar un cambio, envía la
alerta y termina.
Evaluación de la Tarea y
qué entregar:
70% su programa cumple plenamente con la especificación o
requerimientos de la tarea.
30%
Documentación. En esta tarea su(s) programa(s) scripts deben
venir
bien
documentados, además incorpore un readme explicando los archivos
que
constituyen su solución y cómo se deben ejecutar. En
archivo
documentación (txt o html) explique a grandes rasgos el
algoritmo o
estrategia usada en sus programas para cumplir con lo pedido. El buen
cumplimiento del procedimiento de entrega
es considerado parte de la documentación.
Ayuda:
- Estudie los ejemplos de programación shell vistos
en clases.
* Revisando cambios en directorio:
- Revise opciones para el comando ls, en particular ls -l
- Revise el comando diff
* Enviando Correo:
- Para enviar el correo puede usar su cuenta de alumno
usm,
alternativamente puede usar su cuenta gmail. Los parámetros
requeridos por su cuenta usm está en https://mail.alumnos.usm.cl/
Para el caso gmail la información está en http://mail.google.com/support/bin/answer.py?hl=en&ctx=mail&answer=12103.
- Para codificar y decodificar Base64, usted puede usar
cualquier
utilitario; por ejemplo perl lo puede hacer usando:
% perl -MMIME::Base64 -e 'print
encode_base64("\000jms1\@jms1.net\000not.my.real.password")'
Cambie el argumento de encode_base64 para codificar otro contiendo.
Para decodificar basta reemplazar encode_base64 por decode_base64.
- Revise: http://qmail.jms1.net/test-auth.shtml
* Aquí encontrará buenas referencias para estudiar SMTP.
* En sus pruebas considere preparar un archivo con los datos pedidos
por el script y correrlo usando:
cmd segundos directorio < otrosParametros.txt
* No deje su tarea para el final.
* Si tras una dificultad no logra avances por más
de 30 minutos, espere la próxima clase, visíteme o
escríbame. Con gusto procuraré ayudarlo.
* Si tiene dudas del enunciado, lo aclararé con gusto y
documentaré aquí.