Alertas SMS Gratis
Posted in Google, Php, Servidores on octubre 4th, 2009 by Itimag – 6 CommentsMe he enterado por los foros de ovh de un sistema de envío de alertas sms gratis mediante el uso de un servicio de Google: el Google Calendar.
Podemos exprimir este recurso utilizando el API de Google Calendar y darle múltiples usos. ¿Se os ocurre alguno? En los foros de OVH se ha pensado en un sistema de monitorización de servidores.
Un usuario de OVH, Power, ha realizado un script php para recibir una alerta por sms en cuanto la carga de alguno de sus servidores supera un “load average” determinado. Otro usuario ha pedido adaptar este script para recibir alertas sms cuando alguno de sus servidores pierde la conexión a internet así que esta tarde me he puesto en ello.
El script resultante ha sido el siguiente:
<?php /* SMS PING 0.1 creado el 3 de Octubre 2009 web http://foros.ovh.es/showthread.php?t=5184 USO del script: 1. Introducir tus datos de Google Calendar en la configuración del script. 2. Introducir el listado de los servidores a monitorizar. 3. Subir el script al servidor. 4. Añadir la tarea al cron. El tiempo de ejecución dependerá de la cantidad de servidores a monitorizar. Nota: En caso de que un servidor no responda, pasa un tiempo hasta averiguar que no responde y enviar el sms. */ // Configuración $email = "tu_cuenta@gmail.com"; $password = "password"; // Lista de servidores a monitorizar. Introducir un dominio o la IP del servidor. $ips_array = array("ks35xx1:www.google.es","ks35xx2:www.yahoo.es"); // Carga librerías Zend_Gdata ini_set('include_path', 'ZendGdata/library'); require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata'); Zend_Loader::loadClass('Zend_Gdata_AuthSub'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); // Conexión con Google Calendar $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; // nombre del servicio //de Google Calendar $client = Zend_Gdata_ClientLogin::getHttpClient($email,$password,$service); // Función para crear evento en Google Calendar function createQuickAddEvent ($client, $quickAddText) { $gdataCal = new Zend_Gdata_Calendar($client); $event = $gdataCal->newEventEntry(); $event->content = $gdataCal->newContent($quickAddText); $event->quickAdd = $gdataCal->newQuickAdd('true'); $newEvent = $gdataCal->insertEvent($event); } function enviasms($cliente,$servidor){ $texto = "Fallo en el servidor ".$servidor; // Hora y minuto con retardo de 2 minutos $hora = date("H"); $minutos = date("i")+2; // Creación del evento en Google Calendar createQuickAddEvent($cliente, $texto." ".$hora.":".$minutos); } while(list($k,$v)=each($ips_array)){ $datos_ip=explode(":",$v); if(substr($datos_ip[1],0,4)!="http"){ $link = "http://".$datos_ip[1]; } $churl = @fopen($link,'r'); if (!$churl) { echo "El servidor \"".$datos_ip[0]."\" esta Offline\n"; enviasms($client,$datos_ip[0]); }else{ echo "El servidor \"".$datos_ip[0]."\" esta Online\n"; } } ?>
El script requiere de unas librerías llamadas “Google Data Client Library Files”, las cuales incluyo en la versión descargable del script, preparada para usar. Simplemente debéis introducir activar el servicio de sms hacía vuestro teléfono en la configuración de vuestro google calendar, introducir los datos a éste en el script y añadir los servidores a monitorizar.
¿Cómo funciona el script? Lo que hace es ir comprobando que cada uno de los servidores introducidos respondan a una petición http. En caso de que no responda, se crea un evento en google calendar, el cúal nos enviará un sms a nuestro teléfono.
Se aceptan críticas y sugerencias. Espero que sea de vuestro agrado
.