В этой статье вы пройдете через создание простой сценарии оболочки для отправки сообщений Telegram Messenger. Затем вы будете использовать этот скрипт для отправки уведомления о каждом вход в SSH в свой сервер.
Создать телеграмму бота
Чтобы отправить сообщение Telegram Group или Channel, вы должны сначала создать свой бот. Просто открыть телеграмму, найти @botfather и тип /Начало
. Затем следуйте инструкциям для создания бота и получите токен для доступа к HTTP API.
Создать канал
Создайте новый канал в телеграмме и Добавьте свой бот как член Отказ Таким образом, ваш бот может отправлять сообщения на канал.
Для того, чтобы получить идентификатор канала, сначала опубликуйте любое сообщение на канал. Затем используйте этот шаблон ссылки, чтобы получить идентификатор канала: https://api.telegram.org/bot
Вот пример ответа:
{ "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" } } ] }
Сценарий для отправки сообщения
Чтобы отправить сообщение, мы могли бы использовать простую команду:
curl 'https://api.telegram.org/bot/sendMessage?chat_id= &text= '
Но в программировании хорошая практика, чтобы скрыть реализацию низкого уровня. Итак, мы создадим команду Terminal Linux Telegram-Отправить
И мог отправлять сообщения с этой простой командой.
Давайте создадим файл Telegram-send.sh.
touch telegram-send.sh
Затем добавьте скрипт в этот файл. Установите свой идентификатор группы и токен в сценарии.
#!/bin/bash GROUP_ID=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
Это не очень хорошая практика для хранения вашего токена в этом месте, но на данный момент все в порядке. Кроме того, вы можете ограничить действия, которые ваш бот может сделать в канале только для отправки сообщений.
Чтобы запустить этот сценарий, мы должны добавить разрешение
chmod +x telegram-send.sh
Теперь вы можете проверить это
./telegram-send.sh "Test message"
Для того, чтобы использовать этот скрипт от везде и введите Telegram-Отправить
вместо этого ./telegram-send.sh
Добавьте его в/usr/Bin/папка
sudo mv telegram-send.sh /usr/bin/telegram-send
Владелец всех файлов в/usr/bin — пользователь root. Итак, давайте сделаем то же самое с нашим сценарием:
sudo chown root:root /usr/bin/telegram-send
Теперь вы можете проверить это
telegram-send "Test message"
Отправить уведомление о SSH Login
Все файлы с расширением .sh в папке/etc/profile.d/будут выполняться всякий раз, когда введен оболочка логина Bash или нагрузки на рабочем столе.
Добавим новый скрипт для отправки уведомления.
touch login-notify.sh
Добавьте этот код в скрипт
#!/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"
Затем переместите этот скрипт в/etc/profile.d/папка
sudo mv login-notify.sh /etc/profile.d/login-notify.sh
Теперь повторно войдите на свой веб-сервер и проверьте его работает.
Оригинал: «https://dev.to/bogkonstantin/send-message-to-telegram-on-any-ssh-login-24c8»