Esta pagina se ve mejor con JavaScript habilitado

Enviar telegram desde bash/python

 ·  🎃 kr0m

Enviar mensajes a través de Telegram resulta muy útil sobretodo cuando se programan scripts de check o bakcups, de este modo podemos ser notificados sobre ciertas alarmas o errores. Ya utilizamos con anterioridad las notificaciones vía telegram desde python aquí y aquí, pero a veces no disponemos de python en el servidor así que dejo dos versiones la escrita en bash y en python.

La versión para bash sería la siguiente:

vi sendTelegram.sh

#!/usr/bin/env bash
function sendTelegram() {
    token="XXXX"
    id="YYYY"
    url="https://api.telegram.org/bot$token/sendMessage"

    local message="$1"
    if [ -z "$message" ]; then
        message="$HOSTNAME trying to use sendTelegram incorrectly"
    fi

    curl -s -X POST "$url" -d chat_id="$id" -d parse_mode="MarkdownV2" --data-urlencode "text=$message" &> /dev/null
    if [ $? -ne 0 ]; then
        echo "Error with bot"
    fi
}

message=$(printf "%s\\n%s" "$HOSTNAME" $'No watchdog device detected:\ngrep \\-q "blacklist softdog" \\/lib\\/modprobe\\.d\\/blacklist\\_linux\\_\\*\\.conf\ncat \\/etc\\/modules\\-load\\.d\\/softdog\\.conf\ncat /etc/udev/rules\\.d/61\\-watchdog\\.rules')
sendTelegram "$message"
chmod 700 sendTelegram.sh
./sendTelegram.sh

La versión desde python:

vi sendTelegram.py

import requests
import sys

def sendMessage(msg):
    apiKey = "API_KEY"
    userId = "USER_ID"
    data = {"chat_id":userId,"text":msg}
    url = "https://api.telegram.org/bot{}/sendMessage".format(apiKey)
    r = requests.post(url,json=data)

msg = sys.argv[1]
sendMessage(msg)
python sendTelegram.py TestPython
Si te ha gustado el artículo puedes invitarme a un RedBull aquí