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 . Luego, siga las instrucciones para crear un bot y obtener un token para acceder a la API HTTP. /start Crear canal Cree un nuevo canal en Telegram y . Entonces tu bot podría enviar mensajes al Canal. agregue su bot como miembro 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: { : , : [ { : , : { : , : { : , // this is your channel id : , : }, : , : } } ] } "ok" true "result" "update_id" 123 "channel_post" "message_id" 48 "chat" "id" -123123123 "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 y podría enviar mensajes con este simple comando. telegram-send 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. GROUP_ID=<group_id> BOT_TOKEN=<bot_token> [ == ]; 0 [ -z ] 0 [ -ne 1 ]; 0 curl -s --data --data > /dev/null #!/bin/bash # this 3 checks (if) are not necessary but should be convenient if " " $1 "-h" then echo "Usage: `basename ` \"text message\"" $0 exit fi if " " $1 then echo "Add message text as second arguments" exit fi if " " $# then echo "You can pass only one argument. For string with spaces put it on quotes" exit fi "text= " $1 "chat_id= " $GROUP_ID 'https://api.telegram.org/bot' $BOT_TOKEN '/sendMessage' 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 en cambio agréguelo a la carpeta /usr/bin/ telegram-send ./telegram-send.sh 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 login_ip= login_date= login_name= message= $ $ $ telegram-send #!/bin/bash # prepare any message you want " " $(echo $SSH_CONNECTION | cut -d " " -f 1) " " $(date +"%e %b %Y, %a %r") " " $(whoami) # For new line I use $'\n' here "New login to server" '\n' " " $login_name '\n' " " $login_ip '\n' " " $login_date #send it to telegram " " $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/