ELO-330: Programación de Sistemas
Tarea 1: Monitor de Servicios en Línea

Nombre: msl: Monitor de servicios en línea

Sintaxis: msl <máquina> <URL>  <servidor_smtp> <email> <mm>
Máquina: nombre de la máquina cuya conexión a la red es monitorizada.
URL: recurso de internet monitorizado por no cambio desde inicio del script.
servidor_smtp: nombre del servidor SMTP a utilizar para enviar correo.
email: dirección de correo que recibirá notificación.
mm: intervalo en minutos entre notificaciones.

Descripción
    msl es un comando que permite la monitorización de tres servicios los cuales son reportados regularmente a través de un correo electrónico. Estos servicios son:
- Carga promedio de la CPU del computador donde corre el script.
- Conectividad a la red de la máquina indicada en el parámetro. Ésta está definida por el éxito ante una consulta ping desde la máquina que corre el script.
- Disponibilidad y no cambio de una página web determinada. Ésta es definida por el parámetro URL. El reporte de servicio enviado por mail debe indicar si esta página ha cambiado desde el inicio del script.
  El correo de notificación enviado al email a través del servidor servidor_smtp cada mm minutos tiene el siguiente formato:
-----------
Como subject poder: Reporte de msl desde <máquina en que corre el script>

Nivel de carga promedio del procesador el último minutos: xx%
Conectividad hacia <máquina>: <rtt reportado por ping> o NO HAY
Disponibilidad de <URL>: OK o CAMBIO! con fecha <fecha reportada por http>

Atte.,
msl
----------
Adicionalmente usted podrá incluir otra información según usted lo desee; sin embargo, debe permitir la ejecución tal cual se indica aquí y la primera parte del reporte debe ajustarse a lo señalado.

Ayuda:
- Revise la página de manual del comando top, en especial opción -n
- Revise la página de manual del comando ping, en especial opción -c
- Revise el formato del protocolo http (puede dar una mirada a Wikipedia, y en particular a su especificación)
- No deje su tarea para el final. Si queda "trancado" por más de 30 minutos, espere la próxima clase, visíteme o escríbame.
Si tiene consultas, con gusto las atiendo en clases ...
Consulta sobre envío de correos usando telnet
=============================
Probé y no pude reproducir el problema. Los siguiente dio buen resultado:
$ telnet smtp.elo.utfsm.cl 25 < msg.txt
Aquí el contenido de msg.txt.
Sí observé que los mensajes de respuesta a cada comando SMTP no son mostrados en pantalla. Explicación certera a esto, por de pronto no tengo. Puede ser porque al enviar todos los comandos de una vez a través de la conexión TCP con el servidor de correo, el cliente telnet detecte el cierre de conexión antes que él pueda mostrar las respuestas por pantalla (que podrían estar en algún buffer, esta idea no la he validado).

La situación presente con telnet al cerrar conexión tan pronto su entrada termina impide ver los retornos desde el servidor SMTP como también los del servidor WEB. Esto último es muy inconveniente para efectos del acceso a la fecha de modificación de la página web. Una solución para esto, seguramente hay mejores, es incorporar una pausa de un segundo luego del envío de los comandos al servidor web antes del fin de archivo visto por telnet. Un ejemplo es este script, el cual usado en conjunto con el archivo del requerimiento, atienden el problema. Su uso conjunto conduce a:

agustin@agustin2005 18:23:40~/WWW/elo330/2s07/assignments$ alimentador.sh < head.txt | telnet www.elo.utfsm.cl 80
Trying 200.1.17.3...
Connected to vega.elo.utfsm.cl.
Escape character is '^]'.
HTTP/1.1 200 OK
Date: Thu, 23 Aug 2007 22:24:45 GMT
Server: Apache/1.3.37 (Unix) mod_jk/1.2.14 PHP/4.4.3 mod_ssl/2.8.28 OpenSSL/0.9.7c
Last-Modified: Tue, 09 Aug 2005 13:48:10 GMT
ETag: "d8b4c2-299-42f8b41a"
Accept-Ranges: bytes
Content-Length: 665
Connection: close
Content-Type: text/html

Connection closed by foreign host.

Lo cual resuelve el problema presente en:

agustin@agustin2005 18:23:54~/WWW/elo330/2s07/assignments$ telnet www.elo.utfsm.cl 80 < head.txt
Trying 200.1.17.3...
Connected to vega.elo.utfsm.cl.
Escape character is '^]'.
Connection closed by foreign host.
agustin@agustin2005 18:24:13~/WWW/elo330/2s07/assignments$