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$