Saltar al contenido

Agregador de Contenidos Agregador de Contenidos

Control router

En esta sección vamos a tratar de dar una utilidad práctica a nuestra Raspberry Pi. La utilizaremos para controlar algunas operaciones de nuestro router. Para que esto sea posible es necesario que tu router permita el acceso por TELNET o por SSH, no todos lo tienen, en algunos simplemente está desactivado y podrás activarlo desde la interfaz Web de configuración del router.

Una prueba rápida es probar a conectar utilizando los respectivos comandos, en ambos casos si funciona te pedirá "login" y "password", suelen ser los mismos que se utilizan en el acceso por la interfaz Web, por ejemplo(cambie la IP por la de su router):

telnet 192.168.1.1
ssh 192.168.1.1

 

El router utilizado en este caso, un  "Comtrend AR-5381u", permite el acceso por TELNET, por eso en los ejemplos que aparecen más adelante se ha utilizado dicho protocolo. En resumidas cuentas, lo interesante es ver cómo se pueden automatizar las órdenes que se envían al router por lo que si la conexión fuera por SSH no debería ser un problema adaptar los ejemplos.

Una de las ventajas de este router es que dispone de un puerto USB, por lo que la alimentación de la Raspberry Pi se puede conectar directamente a él y ahorrarse el tener que utilizar un alimentador a parte:

Como se observa en la imagen, la idea es conectar la Raspberry Pi sin monitor ni teclado y acceder a ella por SSH. Como distribución para la Raspberry Pi se ha utilizado MINIBIAN pero debería valer perfectamente cualquier otra. He preparado una guía sobre MINIBIAN en el siguiente enlace: Instalar y configurar MINIBIAN.

 

Activar/Desactivar la WIFI

La primera aplicación que vamos a ver es cómo activar o desactivar la conexión WIFI del router de forma programada a la horas que nos interese. Esto puede venir muy bien ya sea por ejemplo para ahorrar energía por las noches, para que sólo esté disponible a ciertas horas del día como cuando llegamos a casa o para controlar las horas de conexión de los usuarios, o simplemente si eres de los que crees que la radiación WIFI puede ser perjudicial, controlar así los momentos en los que quieres que esté encendida.

Ahorro de energía vas a conseguir poco si sólo la usas para esta tarea, pues por poco que consuma el hecho de tenerla encendida las 24 horas ya va ha ser un gasto adicional, pero la idea es sacarle provecho con más utilidades para así amortizar el tener otro "cacharrito" conectado. Además estamos suponiendo un uso para la casa donde sólo suele haber un router, si pensamos en un centro u oficinas donde tenemos varios puntos puntos WIFI, sí empieza a ser rentable además de aumentar la seguridad al desactivar la WIFI en los momentos que no es necesaria.

Lo primero que tenemos que hacer es conectarnos al router y averiguar las órdenes que activan y desactivan la WIFI. Se puede dar el caso de routers en los que no sea posible realizar esta o algunas operaciones mediante comandos, que tengas acceso por TELNET o SSH no te garantiza esta tarea.

Nos conectamos por TELNET al router:

$ telnet 192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
BCM96328 Broadband Router
Login: admin
Password:
 >

Después de introducir el usuario y contraseña, el símbolo ">" me indica que estoy dentro del router listo para introducir comandos. El símbolo puede ser cualquier otro dependiendo del dispositivo. Compruebo que funciona el comando "help" y me muestra un resumen de comandos disponibles. La lista de comandos es grande y si uno no está acostumbrado a manejar este tipo de dispositivos, puede ser laborioso descubrir lo que buscamos, así que buscando en Internet no tardo mucho en descubrir que alguien ha hecho el trabajo sucio por mí y encuentro que las órdenes para activar y desactivar la WIFI respectivamente son:

wlctl up
wlctl down

Las órdenes varían según el modelo del router por lo que le tocará a usted investigar cuales pueden ser en su caso. Una vez que compruebo que las órdenes funcionan correctamente salgo de la sesión TELNET:

 > quit

Bye bye. Have a nice day!!!
Connection closed by foreign host.
madrid@pc-01:~$ _

Ahora se trata de automatizar con un script la secuencia de órdenes, incluido realizar el inicio de sesión por TELNET. Empezamos viendo el ejemplo más básico para aprender como redirigir las órdenes al comando TELNET, que es la clave de todo:

#!/bin/bash
(
echo open 192.168.1.1
sleep 1
echo admin
sleep 1
echo tucontraseña
sleep 1
echo wlctl down
sleep 2
echo quit
sleep 2
) | telnet

Vemos que la secuencia de órdenes se ponen entre un paréntesis de apertura "(" y otro de cierre ")" y se redirige su salida mediante un pipe "|" al comando TELNET. Después de cada orden viene una pausa con el comando sleep para dar tiempo a que termine la orden antes de ejecutar la siguiente. Este tiempo en la mayoría de los caso suele valer con un segundo, pero es importante alargarlo lo suficiente en los casos que la orden pueda tardar más, de lo contrario, el script fallará. Un script más elaborado debería controlar la salida de texto para averiguar realmente cuando a terminado la orden y no depender así del tiempo pero, pero suele ser algo más complejo y normalmente con las pausas adecuadas suele funcionar bien.

Esta sería el resultado de ejecutar dicho script, tras el cual compruebo que la WIFI del router se ha desactivado:

$ bash wifi.sh
telnet> Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
BCM96328 Broadband Router
Login: admin
Password:
 > wlctl down
 > quit

Bye bye. Have a nice day!!!
Connection closed by foreign host.
$ _

Una vez conocida la base, pongo a disposición algún ejemplo más elaborado.