From d02d42b2db6ae88f5336b168a34581f309676bbe Mon Sep 17 00:00:00 2001 From: stirelshka8 Date: Fri, 24 Jan 2025 18:51:23 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BE=D0=BF=D0=BE=D0=B2=D0=B5=D1=89=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20Telegram=20=D0=B8=20GotiFy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backup.ini | 10 +++++++++- backup.sh | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/backup.ini b/backup.ini index 956e1d7..ec39072 100644 --- a/backup.ini +++ b/backup.ini @@ -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] \ No newline at end of file +[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] \ No newline at end of file diff --git a/backup.sh b/backup.sh index a61f435..90f2b0e 100755 --- a/backup.sh +++ b/backup.sh @@ -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" < 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 "Резервное копирование завершено успешно."