Nos comunicamos con nuestro servidor

Hola de nuevo, aunque más tarde de lo habitual. Hoy tocaba configurar los clientes de OpenVPN en nuestros ordenadores de sobremesa o portátiles. Pero lo cierto es que no tiene mucho misterio, básicamente es instalar el cliente OpenVPN y pasarle el archivo de configuración ovpn. Internet está llena de tutoriales que explican como hacerlo.

También me he dado cuenta que yo te decía muy alegremente lo de “coges el archivo ovpn y te lo pasa al móvil”. En mi caso no tengo ningún problema para pasar, copiar, mover y renombrar archivos de forma remota, sin ni tan siquiera acercarme a mi raspi. Pero para ti, creo que no será tan fácil. Imagino que tu método para sacar los archivos de configuración de la entrada anterior era pincharle un pendrive y copiarlo como buenamente podías. Así que lo primero es explicar una forma muy fácil para manejar archivos de forma remota.

Lo más sencillo es usar un cliente de FTP que soporte el protocolo SCP. Este protocolo sirve para transferir archivos a través de SSH. Es un buen método y no tenemos que hacer nada, funciona con la configuración actual. Los datos de conexión son los mismos que usamos con SSH. Podemos usarlo desde nuestro móvil, ordenador de sobremesa, tablet o lo que sea. Solo necesitamos un cliente de FTP que soporte SCP como Filezilla, actualmente casi todos soportan este protocolo. Si ya tienes creados los usuarios de tu VPN esta es la mejor manera.

Ahora vamos a preparar la segunda parte de nuestra entrada. Verdad que es un coñazo conectaros cada vez por ssh, para comprobar los logs de actualización, backup, etc. Pues vamos a corregir esto. Haremos que nuestro servidor nos avise de los eventos vía Telegram. Si lo has leído bien vamos a usar el servicio de mensajería instantánea Telegram para enviarnos información y ayudarnos en algunas tareas de forma rápida. La parte fácil es la de notificaciones, pero también haremos que reaccione a nuestros mensajes y podamos obtener información sobre el sistema, realizar acciones. Entre ellas crear y revocar usuarios de nuestra VPN por Telegram, y que nos envíe el archivo ovpn, aunque esta parte la dejaremos para la próxima.

Para esto vamos a usar un bot. Bot es una abreviatura inglesa que significa robot. Los bots son unos chats especiales, automatizados capaces de interactuar con el usuario. Hay muchos, algunos te dan información del tiempo, otros hacen encuestas, para casi cualquier cosa hay un bot. Nosotros vamos a crear el nuestro propio.

En esta entrada tenemos que programar nuestros scripts para el bot en Python. Un lenguaje de programación muy sencillo, pero a la vez muy versátil y potente. Se pueden hacer autenticas viguerías con él. También tendremos que añadir 1 alguna línea a los que ya tenemos hechos para que nuestro bot y nos notifique las acciones.

Lo primero que tenemos que hacer es instalar la API pública y la librería de python para los bots de Telegram. Ya sabes, ssh y todo el rollo. Esto se hace con 4 comandos muy sencillos

  1. Clonamos el repositorio de github con este comando git clone https://github.com/eternnoir/pyTelegramBotAPI.git
  2. Entramos en la carpeta del repositorio cd pyTelegramBotAPI
  3. Cambiamos a su he instalamos las setup tools de python con apt-get install python-setuptools
  4. Instalamos la API con python setup.py install

Esperamos que acabe y listo. Si queremos, mientras esperamos, podemos ir creando nuestro bot. Entra en Telegram, necesitaras tenerlo instalado en el móvil o en el ordenador. En el cuadro de búsqueda pon “botfather”. Con este bot crearemos el nuestro, está en inglés pero es muy fácil. Botfather funciona con unos comandos que se identifican con /. Así que le enviamos el comando /newbot. Botfather nos preguntara por el nombre de nuestro bot, siempre tiene que terminar con “bot” o con “_bot” también nos preguntara por el usuario administrador, de nuevo, tiene que acabar por “bot” o por “_bot”. Para esto hay muchos tutoriales por Internet que te enseñan como hacerlo, ponerle una imagen, descripción, etc.

Cuando creamos nuestro bot, si lo hacemos bien, Botfather nos devuelve un número, esto es lo que se llama un token. Cada bot tiene su propio token y son únicos. Sería algo así como la huella dactilar del bot. Copia este número, lo vamos a necesitar, y asegúrate que no te equivocas en ningún carácter. Sin él nuestro bot no funcionará. Una vez creado el bot tenemos que iniciarlo, una de las reglas de los bots es que si el usuario no los invita estos no pueden tomar la iniciativa. Lo más fácil es en Botfather con el comando /mybots te da una lista de tus bots, en principio solo deberias tener uno, el que acabas de crear. Lo seleccionas y te envía un mensaje con información, veras que el nombre de tu bot es un enlace, púlsalo y te llevara a tu bot. Pon el comando /start o dale al botón Iniciar y ya está, ya tienes tu bot activo. Envía un mensaje, aunque solo sea «hola», no obtendrás respuesta.

Ahora necesitamos el «chat_id«, para conseguirlo tenemos que ir a esta dirección de internet https://api.telegram.org/bot<token>/getUpdates?offset=0, te ha de quedar algo similar a esto https://api.telegram.org/bot276472627:asdhfasklbdflageflwqfldbskbvadsbfgw/getUpdates?offset=0 (el token es inventado). Este no es el mejor modo, pero para nuestro propósito ya nos sirve. Además forzando el chat id en el código haremos que nuestro bot solo nos reporte a nosotros. Si lo has hecho bien te devolverá una página casi vacía con algo de texto en la que además podrás ver el mensaje que enviaste, usuario, etc. pero hay un campo, un número de 7 dígitos con el nombre id. Con esto ya tenemos todo lo que necesitamos, el token y el chat id.

He hecho 2 scripts, uno que envíe información de eventos y otro que nos permita enviarle comandos para que el bot realice alguna acción en nuestra raspi. Desde github gitlab puedes descargar ambos scripts con todo el código comentado:

El primero de los 2 es el más complejo y tiene que mantenerse en ejecución todo el tiempo. Para poder ejecutarlos tienes que usar el comando python seguido del nombre del archivo python BotTelegram.py. El problema es que esta instrucción te dejara la terminal colapsada, has de decirle que se ejecute en 2º plano y libere la terminal por si necesitas seguir trabajando, esto se hace añadiendo & al final de la linea python BotTelegram.py &.

En el caso del segundo script, la particularidad es que requiere que le pasemos parámetros y según lo que le pasemos hará una cosa u otra. Al contrario que el anterior solo queremos que se ejecute, realice la acción que le hemos pedido y se cierre no es necesario lo de &. Para pasar parámetros a un programa de python solo tenemos que añadirlos al final de la línea tal que así python BotTelegramNotificaciones.py parametro1 parametro2.

En los scripts de administración solo tienes que añadir la linea correspondiente. Por ejemplo, para el scrip de actualización añade al final python /root/scripts/BotTelegramNotificaciones.py ‘2’ $ruta_completa. También en github he dejado los scripts modificados para que puedas verlos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies