Alertas SMS Gratis

Me 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 :) .

  1. yamikel dice:

    amigo tengo problemas con el bing9 :

    gracias por el material pero me esta saltando un error que me tiene como loco a ver si me puedes ayudar a solucionarlo te doy acceso ssh si es necesario pero nesecito solucionar el problema el error es ::

    root@server:/etc/bind# /etc/init.d/bind9 force-reload
    * Reloading domain name service… bind9
    rndc: connect failed: 127.0.0.1#953: connection refused [fail]

    please ayudame

  2. Itimag dice:

    @yamikel
    Te he respondido en el post correcto.

  3. ErHacker_22 dice:

    no me funciona me dice El servidor “ks35xx1″ esta Offline El servidor “ks35xx2″ esta Offline ni poniendo www ni http://

  4. carlos dice:

    Hola, antes de nada gracias por el articulo.
    Me sale error:
    Warning: require_once(Zend/Loader.php) [function.require-once]: failed to open stream: No such file or directory in /homepages/45/d223995935/htdocs/gmail2.php on line 27

    Fatal error: require_once() [function.require]: Failed opening required ‘Zend/Loader.php’ (include_path=’ZendGdata/library’) in /homepages/45/d223995935/htdocs/gmail2.php on line 27

    La linea 27 del archivo es:
    require_once ‘Zend/Loader.php’;

    Alguna idea ??

    UN SALUDO.

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Me 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últipl…..

  2. [...] ideas, using this system is to send SMS when your site is down with this script. Share and [...]

Leave a Reply