BashNotifier

0

Описание

Скрипты на Bash для отправки уведомлений из серверных скриптов. На данный момент реализация отправки в Telegram и Вконтакте (VK).

Языки

  • Shell100%
7 месяцев назад
7 месяцев назад
7 месяцев назад
Readme.md

О проекте Bash Notifier

Иногда возникает задача отправки уведомлений с сервера, прямо из скриптов, выполняемых в планировщике cron.

Раньше я отправлял email или sms, но будущее за мессенджерами, поэтому, удобно получать уведомления прямо на телефон в VKMessenger или Telegram.

Проект будет расширяться, хотелось еще добавить мессенджер Max, но он, на данный момент, недоступен для физ. лиц, если ситуация изменится - будет добавлен соответствующий скрипт

Демонстрация работы

tgsend - отправка в телеграм

tgsend "Привет, люди!"

vksend - отправка в ВК

vksend "Привет, люди!"

Базовая подготовка

Важный момент - скрипт должен быть доступен только привилегированному пользователю и недоступен никому более. В моем случае это root (к файлам которого никто не имеет доступ), но можно создать иного пользователя для этой цели, но кто станет рутом, тот это увидит даже на стороннем пользователе, единственный момент - уязвимость самих скриптов, которые запускаются под рутом. Главная цель - никто кроме определенного пользователя не может запускать и читать скрипт, т.к. в нем будут храниться ключи для api.

Поставим необходимый софт (опционально для вашего дистрибутива может быть yum install)

apt install curl grep jq coreutils

Создадим папку со скриптами и перейдем в неё

mkdir /root/scripts cd /root/scripts

Срежем все права на всякий случай

chmod 700 /root/scripts/

Telegram Bash Notifier

Получение токена для api

  • Пишем в Telegram @BotFather, пишем ему команду
    /start
  • Пишем команду
    /newbot
    , придумываем имя с постфиксом bot, например - myServerbot, запоминаем наш токен

На этом этапе у нас есть api Token

Получение USER_ID

  • Пишем своему боту /start и привет...
  • Открываем в браузере адрес (желательно в приватном режиме или почистить потом историю)
    https://api.telegram.org/bot<ТОКЕН>/getUpdates
    ,
  • Нас интересует
    from->id
    , там числовой код

На этом этапе у нас есть USER_ID

Установка и настройка

Перейдем в папку со скриптами

cd /root/scripts

Качаем скрипт

curl -o "tgSend.sh" https://gitverse.ru/api/repos/PavelBelyaev/BashNotifier/raw/branch/master/tgSend.sh

Задаем ему права (чтобы никто не прочитал и не запустил)

chmod 700 ./tgSend.sh

Открываем файл вашим любимым редакторов (vim, vi, nano ...)

nano ./tgSend.sh

И вписываем значения, которые мы получили выше

BOT_TOKEN="ваш токен" CHAT_ID="ваш id"

А теперь при необходимости, чтобы в скриптах не задавать полный путь создадим симлинк в папке /sbin

ln -s /root/scripts/tgSend.sh /sbin/tgsend

Проверяем

tgsend "Hello World"

Bash VK Notifier

Получение токена для api

  • Создаем паблик в вк, можно сделать его максимально приватным (в настройках выставить "частное")
  • Заходим в Управление -> Дополнительно -> Работа с API -> Cоздать ключ (галочкой отмечаем доступ к сообщениям)
  • Сверху в своем паблике видим "написать", пишем самому себе в сообщество.
  • В диалоге сверху всплывет "разрешить сообществу писать мне", разрешаем, так ваш бот сможет вам писать.
  • При входе в сообщество может всплывать уведомление о правилах использования ботов, его тоже принимаем, мы только для добрых целей планируем использовать бота и все правила будем соблюдать, иначе нас забанят и бот сломается.

На этом этапе у нас есть api Token

Получение USER_ID

  • Заходим на свою страничку
  • Жмем CTRL+U, чтобы увидеть исходный код
  • В первых строках есть ID: XXXXX, его тоже копируем и запоминаем

На этом этапе у нас есть USER_ID

Установка и настройка

Перейдем в папку со скриптами

cd /root/scripts

Качаем скрипт

curl -o "vkSend.sh" https://gitverse.ru/api/repos/PavelBelyaev/BashNotifier/raw/branch/master/vkSend.sh

Задаем ему права (чтобы никто не прочитал и не запустил)

chmod 700 ./vkSend.sh

Открываем файл вашим любимым редакторов (vim, vi, nano ...)

nano ./vkSend.sh

И вписываем значения, которые мы получили выше

ACCESS_TOKEN="тут токен" USER_ID="тут наш id, чтобы писать себе"

А теперь при необходимости, чтобы в скриптах не задавать полный путь создадим симлинк в папке /sbin

ln -s /root/scripts/vkSend.sh /sbin/vksend

Проверяем

vksend "Hello World"

Отправка везде и сразу

Очень редко, но бывают ситуации, когда какой-то из сервисов временно недоступен на час или больше, но это может быть критичным, поэтому можно отправлять везде и сразу, главное чтобы делать это без блокировки, если один скрипт долго не может достучаться до апи, то второй должен выполняться без задержек

Пока не будем рассматривать вариант, когда нет интернета, позже прикручу модем и буду проверять наличие интернета, если нет, то отправлять sms в зависимости от критичности уведомления...

#!/bin/bash [ -z "$1" ] && exit 1 tgsend "$1" >/dev/null 2>&1 & vksend "$1" >/dev/null 2>&1 &