Добавлено оповещение Telegram и GotiFy

This commit is contained in:
Евгений Александрович 2025-01-24 18:51:23 +03:00
parent 4fe9f8401a
commit d02d42b2db
2 changed files with 55 additions and 5 deletions

View File

@ -7,4 +7,12 @@ FILES=/home/user/BashProject/backup.sh,/home/user/jet/restore.sh
FTP_SERVER=127.0.0.1
FTP_USER=user
FTP_PASS=password
[OTHER]
[SENT]
ENABLE_SENT=true
ENABLE_SENT_GOTIFY=true
ENABLE_SENT_TELEGRAM=true
GOTIFY_URL=http://ваш_gotify_сервер
GOTIFY_APP_TOKEN=0000000
TELEGRAM_TOKEN=00000000
CHAT_ID=00000000
[END]

View File

@ -13,7 +13,7 @@ if [ "$EUID" -ne 0 ]; then
fi
# Проверка наличия необходимых утилит
for cmd in tar ftp lftp; do
for cmd in tar ftp lftp curl; do
if ! command -v "$cmd" &> /dev/null; then
echo "Ошибка: Утилита '$cmd' не найдена. Установите её и повторите попытку."
exit 1
@ -53,6 +53,42 @@ get_ini_value() {
exit 1
}
get_sent_message() {
# Настройки для Telegram
TELEGRAM_TOKEN=$(get_ini_value "SENT" "TELEGRAM_TOKEN")
CHAT_ID=$(get_ini_value "SENT" "CHAT_ID")
# Настройки для Gotify
GOTIFY_URL="$(get_ini_value "SENT" "GOTIFY_URL")/message"
GOTIFY_APP_TOKEN=$(get_ini_value "SENT" "GOTIFY_APP_TOKEN")
# Сообщение для отправки
local message="$1"
local title="$(hostname)"
local escaped_message=$(printf '%s\n' "$message" | jq -R .)
if [[ "$ENABLE_SENT" == "true" ]]; then
if [[ "$ENABLE_SENT_GOTIFY" == "true" ]]; then
response=$(curl -s -o /dev/null -w "%{http_code}" -X POST "$GOTIFY_URL"
-H "X-Gotify-Key: $GOTIFY_APP_TOKEN"
-H "Content-Type: application/json"
-d "{"title":$title,"message":$escaped_message,"priority":5}")
if [[ "$response" -ne 200 ]]; then
echo "Gotify error: $response"
fi
fi
if [[ "$ENABLE_SENT_TELEGRAM" == "true" ]]; then
response=$(curl -s -o /dev/null -w "%{http_code}" -X POST "https://api.telegram.org/bot$TELEGRAM_TOKEN/sendMessage"
-d "chat_id=$CHAT_ID&text=$title: $message")
if [[ "$response" -ne 200 ]]; then
echo "Telegram error: $response"
fi
fi
fi
}
# Указываем директории и файлы для копирования
DIRECTORIES=$(get_ini_value "Backup" "DIRS")
FILES=$(get_ini_value "Backup" "FILES")
@ -114,16 +150,22 @@ if [[ ! -f "$LOG_FILE" ]]; then
fi
# Загружаем файлы на FTP-сервер
echo "Передача файлов по FTP ..."
lftp -u "$FTP_USER","$FTP_PASS" "$FTP_SERVER" <<EOF > ftp_log.txt 2>&1
set ssl:verify-certificate no
put "$(pwd)/$TAR_NAME"
put "$(pwd)/$LOG_FILE"
set net:timeout 10
set net:max-retries 3
set net:reconnect-interval-base 5
set net:reconnect-interval-multiplier 2
put "/$TAR_NAME"
put "/$LOG_FILE"
bye
EOF
# Проверка статуса выполнения FTP команды
if [ $? -ne 0 ]; then
echo "Ошибка при выполнении FTP команды."
rm "$TAR_NAME"
exit 1
fi
@ -135,5 +177,5 @@ rm "$LOG_FILE"
echo "Временная директория $TEMP_DIR удалена."
echo "Архив $TAR_NAME удален."
echo "Лог-файл $LOG_FILE удален."
get_sent_message "Succes"
echo "Резервное копирование завершено успешно."