Haciendo un bot que twittea cuando se te cae Internet

Llevo semanas experimentando cortes constantes en mi conexión a Internet, y cuando digo “constantes”, digo que he llegado a tener diez cortes en media hora. Debido a que durante cada día des de que han empezado he contactado con Jazztel (mi ISP) para que solventaran el problema, sólo me han dado soluciones de tipo “reinicia el router” o “desconecta tu Raspberry Pi del router”, vamos, soluciones sin sentido para problemas de la línea telefónica. Hasta mandaron a un técnico a ver qué pasaba, y se quedó alucinado al ver que en cinco minutos presenciamos tres cortes seguidos de la conexión.

Harto de toda esta demagogia por parte de una operadora con una supuesta reputación y el eslogan de “te quedarás por el servicio técnico”, decidí crear un script que publicaría un tweet a la cuenta oficial de Jazztel cada vez que se me fuese la conexión y volviera. Aquí os voy a explicar cómo lo he hecho.

Requisitos

La idea es que el script esté funcionando 24/7, así que lo dejé ejecutándose en mi Raspberry Pi. Vosotr@s podéis dejarlo ejecutando en cualquier ordenador con Linux, pero la idea es que tampoco se os dispare la factura de la luz.

También vais a necesitar una cuenta en IFTTT y, posiblemente, crearos otra cuenta en Twitter, para evitar llenar la vuestra de spam si tenéis caídas muy frecuentes como yo.

Proceso de creación

Paso 1 – Script en Linux

En nuestro ordenador con Linux, crearemos un script con el siguiente código (podéis guardarlo donde queráis, pero es recomendable que sea la misma partición que el sistema, si tenéis el home aparte puede haber conflictos).

#!/bin/bash
caida=0
while [ 2 = 2 ]; do
        nc -z 8.8.8.8 53  >/dev/null 2>&1
        online=$?
        if [ $online -eq 0 ]; then
            if [ $caida -eq 1 ]; then
                sleep 15
                curl -X POST URL_DE_IFTTT_MAKER > /dev/null
                caida=0
            fi
        else
            echo "Caída registrada a fecha y hora de "$(date)"." >> /home/kyngo/petada.log
            caida=1
        fi
        sleep 30
done

Con este código activaremos una receta de IFTTT que nos publicará un tweet. Donde pone “URL_DE_IFTTT_MAKER” tendremos que poner la URL que obtendremos en el siguiente paso.

 

Paso 2 – Creación de la receta en IFTTT

Entraremos en IFTTT y nos crearemos una cuenta nueva o usaremos la que ya tengamos. Hecho eso, iremos a la sección “My Recipes” y le daremos al botón “Create a Recipe”

Cuando veamos una pantalla como esta, haremos click en “this”.

twitter1

El siguiente paso es poner en el buscador que nos aparecerá la palabra “maker”, y le daremos a la primera opción disponible.

twitter2

Si no habéis usado nunca esta opción os pedirá permiso para usarla. Os saldrá un pop-up diciendo que ya estáis en el canal Maker, cerráis eso y escogéis lo que queréis hacer, que en este caso es recibir una solicitud (es lo único que nos dejará escoger). Clicamos en la opción.

Ahora deberéis escoger un nombre para el evento. Podéis poner lo que queráis. Yo, en este ejemplo, pondré “mi_internet_se_fue”. Después dadle a siguiente.

twitter3

Si veis esto, vais bien encaminados. El siguiente paso es hacer que twittee. Haremos click en “that” para ello. En este caso en el buscador pondremos “twitter”. Sólo nos enseñará una opción, le hacemos click para el siguiente paso.

twitter4

Escogeremos “Post a tweet”. Probablemente os pida autenticaros en twitter. Si tenéis la cuenta creada, ponedla ya. Si no, podéis usar la vuestra misma o hacer otra como fue mi caso. Cuando estéis listos, podréis pasar al próximo paso: lo que pondrá el tweet.

twitter5

Podéis poner lo que queráis. Hecho eso le dais a “Create Action”, y la receta estará lista. Le dais a “Create Recipe luego” y ya estará la receta disponible para su uso.

Después de eso vais a esta URL, y hacéis click en vuestra key. Deberíais ir a una web con una URL así: https://maker.ifttt.com/use/clave_de_ifttt_maker

En esa web, cuando cargue, veréis un hueco donde pone {event}, ahí pondremos el nombre de nuestro evento, en este caso, “mi_internet_se_fue”.

twitter6

Acto seguido de hacer eso, podéis pulsar el botón de “Test it” para probar que funcione. Si funciona bien, coged la URL que hay debajo, donde pone “curl –X POST …”, y la ponéis en el script donde pone “URL_DE_IFTTT_MAKER”. Guardáis el script y ¡listos!

Paso 3 – Hacer que el script arranque cada vez que encendemos la máquina

Este paso es opcional, pero recomendado. Para ello, debéis editar el fichero /etc/rc.local con algún editor de texto de vuestra elección. NOTA: Debéis hacerlo como root. Si no, no os dejará escribir.

Al final de ese fichero, antes de la línea que pone “exit 0” debéis poner la siguiente línea:

sh /ruta/del/script.sh &

Debéis poner la ampersand al final (&) para evitar que el sistema pueda no arrancar. Recordad dónde tenéis el script puesto porque si no, no se iniciará el script (el sistema sí).

Paso 4 – Comprobar que funciona al arrancar

Si habéis hecho el paso 3, este paso es obligatorio para ver que funciona. Simplemente, debéis escribir en un terminal el siguiente comando:

ps aux | grep nombre_del_archivo_del_script

twitter7

Si os sale una línea que pone “sh /ruta/del/script.sh”, quiere decir que el script ha arrancado con éxito con el sistema y está monitorizando la red.

Para los curiosos…

El script en sí lo que hace es comprobar si en la IP 8.8.8.8, puerto 53 hay conexión (son los servidores DNS de Google, siempre están encendidos). Si no recibe respuesta, quiere decir que no puedes ir al exterior. Activa una variable que, irá comprobando cada 30 segundos si ha vuelto la conexión. Al volver, ésta ejecutará una solicitud a los servidores de IFTTT para activar el trigger de nuestra receta, el cual activará automáticamente el tweet a vuestra operadora. Además os mantiene un registro en local de las petadas, por si dura mucho rato.

¡Eso es todo!

Espero haberos sido de utilidad, si montáis este sistema, no dudéis en ponerlo en los comentarios. ¡Nos vemos gente!

Deja un comentario