Как определить сервис systemd, вызвавший bash-скрипт на исполнение? Добрый день, столкнулся с небольшой проблемой. Цель такая- в каждом из необходимых .service файлов на событие OnFailure поставить запуск скрипта, который будет отправлять через телеграм-бота уведомление о сбое того или иного сервиса. Но столкнулся с проблемой, не могу понять, как в bash-скрипте определить, какой именно сервис вызвал этот скрипт, чтобы в сообщении от бота можно было указать, что рухнул тот или иной сервис.

21 Авг 2019 в 06:50
180 +1
0
Ответы
1

Для определения сервиса, вызвавшего bash-скрипт, можно воспользоваться переменной $SERVICE_NAME, которая автоматически устанавливается systemd перед запуском OnFailure скрипта. Например:

#!/bin/bash
service_name=$1
# Отправляем уведомление через телеграм-бота о сбое сервиса
telegram_message="Сбой сервиса $service_name"
curl -s -X POST https://api.telegram.org/bot<token>/sendMessage -d chat_id=<chat_id> -d text="$telegram_message"

Затем в .service файле, в секции [Unit], можно указать вызов скрипта с передачей имени сервиса в качестве аргумента:

[Unit]
Description=Some service
After=network.target
[Service]
Type=simple
ExecStart=/path/to/service_executable
Restart=on-failure
RestartSec=5s
StartLimitInterval=0
Environment=SERVICE_NAME=Some service
[Install]
WantedBy=multi-user.target
OnFailure=/path/to/telegram_script.sh %N

Таким образом, когда сервис упадет и будет вызван скрипт, переменная $SERVICE_NAME будет содержать имя сервиса, который вызвал скрипт, и это имя можно использовать в уведомлении через телеграм-бота.

20 Апр в 13:12
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 093 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир