Скрипт для отправки сообщения об открытии/закрытии ssh сессии на сервере через telegram бота.

#!/bin/bash
 
TOKEN="token:token"
ID="chat_id"
HOSTNAME=$(hostname -f)
DATE="$(date +"%d.%b.%Y -- %H:%M")"
MESSAGE="<b>$PAM_USER</b> did '<b>$PAM_TYPE</b>' at <b>$DATE</b> on $HOSTNAME from <span class=\"tg-spoiler\">$PAM_RHOST</span>!"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
 
curl -s -X POST $URL -d chat_id=$ID -d text="$MESSAGE" -d parse_mode='HTML' 2>&1 /dev/null
 
exit 0

Для срабатывания требует добавления строчки в /etc/pam.d/sshd:

session required pam_exec.so /etc/pam_scripts/notify-on-login.sh
  • TOKEN - переменная для записи токена телеграм-бота (выдается при создании бота через BotFather)

  • ID - переменная для указания ID чата администратора бота. Нужно для сохранения приватности ваших уведомлений - сообщения от бота будут идти исключительно вам.

    Для получения ID чата с вашим ботом сразу после создания бота запустите чат с ним и напишите туда несколько сообщений. После этого перейдите по ссылке https://api.telegram.org/bot<token>/getUpdates. В json выдаче вы найдете список сообщений в чатах бота (там, очевидно, будете только вы), в объектах которых вы и найдете ID чата

Уведомления в боте будут выглядеть следующим образом:

kbtw.server - hostname машины. под спойлером ip адрес, с которого идет подключение