paint-brush
Cómo crear un script simple de Bash Shell para enviar mensajes en Telegrampor@bogkonstantin
25,607 lecturas
25,607 lecturas

Cómo crear un script simple de Bash Shell para enviar mensajes en Telegram

por Konstantin Bogomolov3m2021/01/24
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow
ES

Demasiado Largo; Para Leer

En este artículo, recorrerá la creación de un script de shell Bash simple para enviar mensajes a Telegram messenger usando el comando Curl. Luego, utilizará este script para enviar una notificación en cada inicio de sesión ssh en su servidor.
featured image - Cómo crear un script simple de Bash Shell para enviar mensajes en Telegram
Konstantin Bogomolov HackerNoon profile picture

En este artículo, recorrerá la creación de un script de shell Bash simple para enviar mensajes a Telegram messenger usando el comando Curl. Luego, utilizará este script para enviar una notificación en cada inicio de sesión ssh en su servidor.

Crear bot de telegrama

Para enviar un mensaje a un grupo o canal de Telegram, primero debe crear su propio bot. Solo abre Telegram, busca @BotFather y escribe

 /start
. Luego, siga las instrucciones para crear un bot y obtener un token para acceder a la API HTTP.

Crear canal

Cree un nuevo canal en Telegram y agregue su bot como miembro . Entonces tu bot podría enviar mensajes al Canal.

Para obtener la identificación del canal, primero publique cualquier mensaje en el canal. Luego use esta plantilla de enlace para obtener la ID del canal:

 https://api.telegram.org/bot<YourBOTToken>/getUpdates

Aquí hay un ejemplo de respuesta:

 { "ok" : true , "result" : [ { "update_id" : 123 , "channel_post" : { "message_id" : 48 , "chat" : { "id" : -123123123 , // this is your channel id "title" : "Notifications" , "type" : "channel" }, "date" : 1574485277 , "text" : "test" } } ] }

Script para enviar mensaje

Para enviar un mensaje podríamos usar un comando simple:

 curl 'https://api.telegram.org/bot<YourBOTToken>/sendMessage?chat_id=<channel_id>&text=<text>'

Pero en programación, es una buena práctica ocultar la implementación de bajo nivel. Entonces crearemos un comando de terminal Linux

 telegram-send
y podría enviar mensajes con este simple comando.

Vamos a crear archivo

 telegram-send.sh

 touch telegram-send.sh

Luego agregue el script a este archivo. Establezca su identificación de grupo y token en el script.

 #!/bin/bash GROUP_ID=<group_id> BOT_TOKEN=<bot_token> # this 3 checks (if) are not necessary but should be convenient if [ " $1 " == "-h" ]; then echo "Usage: `basename $0 ` \"text message\"" exit 0 fi if [ -z " $1 " ] then echo "Add message text as second arguments" exit 0 fi if [ " $# " -ne 1 ]; then echo "You can pass only one argument. For string with spaces put it on quotes" exit 0 fi curl -s --data "text= $1 " --data "chat_id= $GROUP_ID " 'https://api.telegram.org/bot' $BOT_TOKEN '/sendMessage' > /dev/null

No es una buena práctica almacenar su token en ese lugar, pero por ahora está bien. Además, podría limitar las acciones que su bot podría hacer en el Canal solo para enviar mensajes.

Para ejecutar este script debemos agregar permiso

 chmod +x telegram-send.sh

Ahora puedes probarlo

 ./telegram-send.sh "Test message"

Para usar este script desde todas partes y escribir

 telegram-send
en cambio
 ./telegram-send.sh
agréguelo a la carpeta /usr/bin/

 sudo mv telegram-send.sh /usr/bin/telegram-send

El propietario de todos los archivos en /usr/bin es usuario raíz. Así que hagamos lo mismo con nuestro script:

 sudo chown root:root /usr/bin/telegram-send

Ahora puedes probarlo

 telegram-send "Test message"

Enviar notificación al iniciar sesión SSH

Todos los archivos con la extensión .sh en la carpeta /etc/profile.d/ se ejecutarán cada vez que se ingrese un shell de inicio de sesión de bash o se cargue la sesión de escritorio.

Agreguemos un nuevo script para enviar la notificación.

 touch login-notify.sh

Agregue este código al script

 #!/bin/bash # prepare any message you want login_ip= " $(echo $SSH_CONNECTION | cut -d " " -f 1) " login_date= " $(date +"%e %b %Y, %a %r") " login_name= " $(whoami) " # For new line I use $'\n' here message= "New login to server" $ '\n' " $login_name " $ '\n' " $login_ip " $ '\n' " $login_date " #send it to telegram telegram-send " $message "

Luego mueva este script a la carpeta /etc/profile.d/

 sudo mv login-notify.sh /etc/profile.d/login-notify.sh

Ahora vuelva a iniciar sesión en su servidor web y compruebe que funciona.

Publicado anteriormente en https://bogomolov.tech/Telegram-notification-on-SSH-login/