Los bot de telegram están aquí, y con ellos una larga lista y oportunidades que podemos aprovechar para mejorar nuestra productividad, en éste caso para administrar nuestros servidores.

Administrar un servidor puede ser una tarea ardua si es que queremos estar pendientes a todo lo que sucede, estar pendiente a los logs, alertas por correo y pendiente de los respaldos, carga del servidor, etc. Es por ello que cree un bot de Telegram para poder tener acceso al servidor, sin tener que conectarme por SSH. Recordemos que los bots de Telegram necesitan estar en un servidor con SSL para poder funcionar.

Éste bot nos permitirá realizar algunas funciones básicas sobre el monitoreo del servidor en donde lo coloquemos las cuales se enumeran a continuación.

/apacheerrorlog

Muestra las últimas entradas del log de errores de Apache. Útil cuando queremos ver qué errores están ocurriendo en nuestro servidor web.

/eximsendmaillog

Muestra la lista de directorios desde donde se está enviando más correos así como el número de correo enviados. Útil para combatir el spam y detectar desde dónde está enviando.

/firewall

Permite colocar en lista blanca en CSF y cpHulk una IP. En el bot real se solicita la IP al usuario. Se requiere tener instalado CSF y/o cPanel. Útil cuando nuestro firewall bloquea alguna IP y no tenemos una computadora  la mano para entrar al WHM.

/free

Muestra la memoria libre, en MB, que se tiene. Útil para constatar que no nos estemos quedando sin memoria RAM o virtual.

/last

Muestra las últimas sesiones en el servidor, incluido los reinicios. Útil para saber quienes son los últimos que han entrado al servidor.

/ls

Lista los archivos y carpetas de un directorio. En el bot real se le solicita al usuario que escriba la ruta a mostrar. Útil para poder visualizar el contenido del sistema operativo.

/ping

Hace ping a un dominio o IP. En el bot real solicita al usuario el nombre de dominio o IP. Útil para determinar si nuestro servidor puede accesar a un determinado servidor.

/ps

Muestra los procesos que concuerden con un filtro. En el bot real se le solicita al usuario que escriba el filtro a buscar. Útil cuando queremos saber todos los procesos de determinado usuario, o procesos estancados que tengan parte de la palabra a buscar.

/top

Muestra los procesos que más están consumiendo la CPU. Útil cuando el servidor presenta signos de tener algún proceso que lo esté alentando.

/uptime

Muestra el tiempo que ha estado el servidor funcionando continuamente. Útil para saber si se ha reiniciado recientemente.

/versions

Muestra las versiones del sistema operativo, Apache, PHP, MySQL, así como la fecha de instalación del sistema operativo. Útil cuando necesitamos hacer documentación e indicar las versiones de nuestro servidor.

/w

Muestra los usuarios conectados a nuestro servidor, así como su IP, tiempo de conexión y qué están ejecutando en ese momento. Útil para identificar accesos no autorizados.

/whois

Muestra información de un dominio, como fecha de registro y cuándo expira, así como a quien se le ha registrado. En el bot real se le solicita al usuario el nombre de dominio a buscar. Útil para determinar si un dominio ha sido registrado y cuánto le falta para que quede libre.

Telegram demo

Para usar el demo en Telegram, agrega a @LinuxMonitorBot

https://t.me/LinuxMonitorBot

Uso del bot

Para poder utilizar el bot, se debe crear un bot en Telegram desde @BotFather

Se coloca el nombre del bot y se descarga el código fuente desde:

https://github.com/angelinux-slack/LinuxServerMonitorTelegramBot

En el código fuente del bot, en la línea 7 donde dice <tuTokenAqui>, debes colocar el token que te dio BotFather.

Se sube el archivo php a tu sitio donde quieres que resida, teniendo en cuenta que dicho dominio debe contar con un certificado digital para que pueda ser accesible desde https.

De preferencia renombra el archivo para evitar que sea facilemente identificable en la web, puedes colocar como nombre el token que te dio BotFather para tu bot.

Ahora debes indicar a Telegram en donde se encuentra tu bot, para ello carga la siguiente página web.
https://api.telegram.org/bot<tuToken>/setwebhook?url=https://<tuDominio/tuArchivo.php>

Donde <tuToken> es el token que te dio BotFather y <tuDominio/tuArchivo.php> es el dominio y la ruta del archivo que subiste.

En tu servidor, edita el archivo /etc/sudoers para darle permiso al usuario donde colocas el bot, que ejecute algunos comandos que sólo root lo puede hacer. Agrega al final del archivo las siguientes líneas

username ALL = NOPASSWD: /usr/sbin/csf

username ALL = NOPASSWD: /scripts/cphulkdwhitelist

username ALL = NOPASSWD: /bin/grep

username ALL = NOPASSWD: /bin/ls

username ALL = NOPASSWD: /bin/ping

username ALL = NOPASSWD: /usr/bin/top

username ALL = NOPASSWD: /usr/bin/whois

Donde username es el nombre de usuario del dominio donde estás subiendo el archivo.

Después de ello, abre una conversación desde Telegram con tu bot, buscando @elNombreDeTuBot y da clic en iniciar y felicidades. Ya tienes un bot que te informará sobre tu servidor.

Se aceptan sugerencias para nuevos comandos.


angelinux

Desarrollador de páginas web desde el año 2000 y con experiencia en programación de sistemas para empresas desde el 2008; cofundador de CONSoluciones; autor del blog de software libre “Angelinux-slack”; docente en maestría en UPAV y fundador de la distribución Linux Falco que está en desarrollo para la Universidad Veracruzana. Además, ponente, organizador de congreso, laborista social, impartidor de cursos de programación y servidores Linux, webmaster, y ex invitado en programa de televisión.

7 Comentarios

rafa · 25 octubre, 2017 a las 04:56

Hola gracias por todo.
Tengo un bot en programado en python, en una pi, funciona correcto, solo tengo un problema y no se por donde van los tiros. Cuando esta un dia o dos sin utilizarse el bot, cierra la conexion con Telegram, tengo que volver a iniciarlo.Cuando busco por google siempre llego a “bot.polling(none_stop=True, interval=0)” , puede ser de la API…https://github.com/eternnoir/pyTelegramBotAPI
Gracias por todo

    angelinux · 30 octubre, 2017 a las 12:47

    Buen día, espero ya hayas podido corregir el problema que tienes.
    Lamentablemente no tengo mucha experiencia con desarrollo en Python.

    Si lograste dar con la solución, te lo agradecería si pudieses compartirla para poder ayudar a otras personas con el mismo problema.

    Gracias.

KoMV-MusicManueñ · 24 febrero, 2018 a las 03:57

No funciona en un servidor con centOs 7 lleve acabo todos los pasos que se describen en le tutorial pero le boot no ejecuta ningún comando que le doy :(((

    angelinux · 24 febrero, 2018 a las 14:28

    Que tal. ¿Configuraste que tu bot conecte al servidor a través de un webhook con SSL activo?
    Si es así ¿Has probado de poner un código de prueba en el que el bot responda cualquier cosa ante un mensaje que se le envíe?
    De aquí partimos para determinar que sucede. Saludos.

Sarabia · 26 marzo, 2018 a las 04:14

No hay manera de hacerlo funcionar en centOS 7.

Se establece el bhook con SSL activo:

ok true
result true
description “Webhook was set”

Se dan los permiso adecuados en /etc/sudoers

Se inicia el bot y se introduce el texto sin obtener ninguna respuesta por parte de servidor.

Envío un chat mediante curl enviando el texto hello world al bot

curl -s -X POST https://api.telegram.org/bot/sendMessage -d chat_id= -d text=”Hello World”

La respuesta es positiva.

¿Alguna idea de que pueda estar pasando?

    angelinux · 30 julio, 2018 a las 06:42

    Telegram permite, por decirlo de alguna manera, dos clases de bots.

    1.- Un bot que manda mensajes desde una fuente; solo se debe indicar cual sería el webhook
    2.- Un bot al que se le mande un mensaje y éste pueda responder; además de webhook, el sitio debe tener un certificado SSL activo, válido y que sea con soporte de una entidad, es decir no valen los autogenerados..

    Ëste script está pensado para que se envíen mensajes automáticos a un chat de Telegra, no para que el usuario mande mensajes y el servidor responda, para ello se necesitarían modificaciones de código y soporte SSL.

    Saludos.

franciscoreg96 · 24 mayo, 2021 a las 22:41

Hola, me interesa saber si ese script es capaz de dectectar cuando un servicio murio y dar alertas. Muchas gracias.

Deja un comentario