Ubuntu Server + Crontab + Bash Script + Whatsapp (Yowsup)

Hoy es noche de dos por uno, así que les compartiré otro post el cual creo que es bastante interesante. Como comentaba en el post anterior he instalado ubuntu server en una computadora muy, muy vieja y he levantado uno que otro servicio, además de instalar y configurar Yowsup para utilizar Whatsapp desde línea de comandos.

Tengo un sevidor en casa y unos cuantos servicios forwardeados a través del Infinitum de la casa. Abrí una cuenta en Changeip.com y esta por configurar su cliente para DDNS cuando me dije a mi mismo, mi mismo y si te envías la dirección ip pública a tu cuenta de whatsapp y de esta manera siempre sabrás cual es la dirección ip publica de la casa :D. Esto despertó mi curiosidad de que es lo que podría hacer un Crontab + Bash script + Yowsup, claro notificaciones al por mayor.

A detalle escribí un script sencillo para resolver la ip publica de Infinitum de la casa y que la envié por un mensaje de Whatsapp desde las de la mañana hasta las 9 de la noche, por que después hay que hacer la meme :3 .

En concreto el Script es el siguiente:

Bash ScriptDonde cada cosa significa:

ruta=/home/user/yowsup/src #una variable que contiene la ruta hacia Yowsup-cli
log=/home/user/scripts/publicip #una variable que contiene la ruta hacia un log para el script
publicip=`curl ifconfig.me` #se resuelve la dirección ip pública y se guarda en una variable

 

python $ruta/yowsup-cli –send 5218117734568 “Hola Usuario, la Ip Publica es $publicip” –wait –config $ruta/whatsapp_config.txt #se ejecuta yowsup para el envío de mensajes con un texto predeterminado que incluirá la variale con la dirección ip publica

 

date=`date` #fehca
usu=`uname` #usuario
ini=`echo “Script ejecutado con éxito”` #texto predeterminado para escribir en el log

echo “$date – $usu – $ini, La Ip Plubica es $publicip” >> $log/historial_ip.log #se escribe en el log

Para ejecutar este script use un crontab, añadiendo la siguiente línea:

00 6-21 * * * /home/user/scripts/publicip/publicip.sh

 Donde especificamos que en todos los minutos 00 de entre las horas 6:00 am a 9:00 pm se ejecutará el script “publicip.sh” el cual ya se explico anteriormente. Para editar el crontab solo es necesario escribir “crontab -e”.

Y como relojito, a cada hora recibo un menaje con mi dirección Ip Pública 😀 

Whatsapp DDNS

 

La verdad no es nada del otro mundo, las aplicaciones pueden ser infinitas, desde notificar ip pública, temperatura hasta mensajearte a ti mismo si eres un forever alone :D.

Cualquier duda y comentario es bien recibido. Saludos.

Usar Whatsapp desde línea de comandos con Yowsup

Buenas noches a todos. Como es habitual tengo muchas cosas en la cabeza las cuales quiero compartir con ustedes por medio de este blog.

En los últimos días he jugado con una vieja computadora con ubuntu server, recordando los años de la maestría, configurar apache, mysql, fail2ban, iptables, usuarios,  roles y un poco de php. En la maestría estaba a cargo de un servidor que se encontraba dentro de la universidad y tenía puertos expuestos hacía internet, por ese tiempo estaba cursando las materias de Cisco CCNA, ya sabrán mi emisión de conocer el modelo OSI y TCP/IP, montar servidores, configuración de diferentes protocolos de enrutamiento, NAT, mapeo de puertos, montar un servidor en casa con una vpn para saltarme las restricciones firewall de la universidad, o un tunnel sobre SSH, en fin todo un ñoño en todo el sentido de la palabra 😀 .

Pero bueno, vamos al grano, el fin de este tutorial es la instalación y la muy sencilla configuración de Yowsup, el cual es una libreria en python para usar whatsapp desde una consola ya sea Linux o Mac (he probado en los dos y todo muy bien). En un principio no me gustaba Whatsapp existiendo otras mensajerías multiplataforma con clientes Web y de Escritorio como Line o Telegram. Pero encontré un post sobre como utilizar Whatsapp con Pidgin utilizando Yowsup y Whatsapp-Purple en Linux y no fue mucha la diferencia para replicar los pasos para Mac usando las mismas librerías y Pidgin e inclusive Adium :D. Les dijo en enlace a ese post Usar Whatsapp con Pidgin en Mac OSX.

Inicialmente se tiene que instalar python y las herramientas necesarias en caso de no contar con ellas, de lo contrario en ubuntu las podemos instalar fácilmente con:

# apt-get install python python-dateutil python-argparse

Es super necesario clonar el repositorio de Yowsup

git clone https://github.com/tgalal/yowsup.git

Ya descargado, lo descomprimimos con unzip master.zip y accedemos al directorio src/, dentro habrá un archivo llamado “config.example” podemos copiarlo a un archivo nuevo para configurarlo con nuestros datos de la siguiente manera # cp config.example whatsapp_config.txt. El nombre del archivo solo es una sugerencia.

Dentro del mismo directorio es necesario dar permisos de ejecución al arhcivo “yowsup-cli” de la siguiente manera

# chmod +x yowsup-cli

Editamos el archivo “whatsapp_config.txt” de la siguiente manera:

Configuración de Whatsapp-congif.txt

Donde cc es el código del país,  phone es el código de país más tu numero de celular (para el caso de  México es necesario poner el número 1 después del código de país como en la imagen, OJO solo México ), id es el IMEI de tu dispositivo, el campo password lo dejamos en blanco ya que no estamos registrados aun.

En mi caso cuento con otro número y equipo celular donde no se puede instalar Whatsapp. Utilizo ese número para registrarlo en Whatsapp.

Hasta este punto todo esta muy bien. Solicitaremos el código de activación por medio de un SMS con ayuda de yowsup-cli:

# sudo python ./yowsup-cli -c whatsapp_config.txt –requestcode sms

Cuando recibamos el código ejecutamos el siguiente comando

# sudo python ./yowsup-cli -c whatsapp_config.txt –register XXX-XXX

Sustituyendo las XXX por el código, es necesario poner el guión “-“. El resultado del comando será lo siguiente

Resultado

 

En la respuesta se observa el campo pw: es cual es el password de nuestra cuenta de whatsapp, se copia el password y se agrega al archivo whatsapp_config.txt en password= . De esta manera tendremos el archivo de configuración para autenticarnos en whatsapp para enviar y recibir mensajes.

Para envíar mensajes desde la terminal ejecutamos

#./yowsup-cli --send 5218118899112 "Test message" --wait --config whatsapp_config.txt

Esto debe ser ejecutado dentro de la carpeta /yowsup/src/, en el parametro –send se escribe el número de destinatario y entre comillas el mensaje.

Para recibir mensaje de whatsapp de ejecuta

# ./yowsup-cli --listen --autoack --keepalive --config yowsup-cli.config

Y pues sacarle jugo a Yowsup. Saludos.