Avisos via Gtalk - Jabber
sábado, 27 de septiembre de 2008Hace un tiempo expliqué como enviar sms al movil con avisos de eventos registrados en el ordenador. Haciendo uso del servicio de envio de SMS de Twitter y mediante una serie de scripts, pero de un tiempo para esta parte el servicio falla más que una escopeta de feria (en realidad creo que el fallo es achacable a Movistar, ya que los SMS aparecen como enviados en Twitter pero nunca llegan ó llega 1 de cada 3) así es que he desarrollado un nuevo sistema de avisos via Jabber.
De esta manera, puedo programar facilmente cualquiera de las cámaras para que me avise mediante un mensaje a mi cuenta en Gtalk – Gmail de, por ejemplo: «Un gorrión se ha metido en la caja de arriba» ó «La cámara 5 esta fallando«.
Gtalk
Gtalk es el sistema de mensajería instantanea desarrollado por Google, de forma automática si dispones de una cuenta en Gmail dispones de la posiblidad de utilizar este servicio. Tan solo necesitas crear una nueva cuenta en Gmail que será la que uses para el envio de mensajes que serán recibidos por la cuenta que ya tienes.
Para el ejemplo, imaginaremos que tenemos una cuenta en Gmail del usuario: envia.mensajes@gmail.com y password: 1234 y la tuya propiamente dicha: yo.mismo@gmail.com
XMPP
Para crear el script en Perl tan solo necesitas tener instalada la librería Net::XMPP de Perl.
Ahora crea un archivo llamado gtalk.pl con el siguiente contenido (una modificación del original de Thus0 at free dot fr) :#!/usr/bin/perl -w
# script to send jabber message to Google Talk Instant Messaging
# using XMPP protocol and SASL PLAIN authentication.
# author: Thus0
# Copyright (c) 2005, Thus0 . All rights reserved.
# released under the terms of the GNU General Public License v2
use strict;
use Net::XMPP;
if($#ARGVConnect(
hostname => $hostname, port => $port,
componentname => $componentname,
connectiontype => $connectiontype, tls => $tls);
if (!(defined($status))) {
print "ERROR: Fallo en la conexion XMPP.\n";
print " ($!)\n";
exit(0);
}
# Change hostname
my $sid = $Connection->{SESSION}->{id};
$Connection->{STREAM}->{SIDS}->{$sid}->{hostname} = $componentname;
# Authenticate
my @result = $Connection->AuthSend(
username => $username, password => $password,
resource => $resource);
# Send message
$Connection->MessageSend(
to => "$to\@$componentname", body => $body,
resource => $resource);
Ahora lo guardais en vuestra carpeta ~/bin y lo haces ejecutable (chmod +x ~/bin/gtalk.pl). Para enviar un mensaje instantaneo desde envia.mensajes@gmail.com a yo.mismo@gmail.com basta con escribir en consola:gtalk.pl "Hola"
¿Facil no? Ahora podeis enteraros allá donde esteis de lo que ocurra en vuestro servidor.
Narfss
#1/ 05 de January/2009 a 14:49:16
Otros comentarios de «Narfss»
Muy interesante, buscaba algo así para poder recibir notificaciones.
También eh encontrado otra forma, lo digo por q siempre es interesante.
Hay una aplicación en los repositorios que permite enviar mensajes por jabber "sendxmpp", según leo en su man incluso funciona con Gtalk, pero no he conseguido dar con la configuración correcta.
Martin Martinez
#2/ 19 de July/2010 a 19:04:28
Otros comentarios de «Martin Martinez»
Hola, estoy intentando enviar unas alertas con el producto PandoraFMS y probando tu script, pero tengo dudas sobre como configurar una cuenta que es de google apps, y uso gtalk pero la conexion es con usuario y dominio, ej: yomismo@empresa.com.uy como seria la configuracion ideal de este script?
Gracias Trebol-A.. por tu publicacion..
Saludos.
Martin Martinez
#3/ 19 de July/2010 a 20:04:32
Otros comentarios de «Martin Martinez»
Hola, auto-contesto a lo anterior, encontre el metodo para el envio masivo de alertas a varios destinatarios. Seria de la siguiente manera:
---------------------
en la parte de TO se remplaza por lo siguiente:
my @to = ("destinatario1","destin2","destin3","etc");
---------------------
en componente se remplaza "gmail.com" por el dominio:
my $componentname = 'empresa.com.uy';
---------------------
y por ultimo en la parte de "# Send message" remplazamos varias cosas para q quede de la siguiente manera:
foreach (@to) {
$Connection->MessageSend(
to => "$_\@$componentname", body => $body,
resource => $resource);
}
----------------------
Esto me soluciono el problema y quedo como un envio de alertas a varios usuarios.
Saludos y estamos en contacto.
mi mail es tincho2005@gmail.com
Trebol-A
#4/ 19 de July/2010 a 20:15:50
Otros comentarios de «Trebol-A»
Pues gracias Martín por el aporte.
18 de November, 2024 @ 14:50