Linux простой скрипт: переадресовать ошибки в файл и отправить по электронной почте

Вопрос или проблема

У меня есть скрипт, который синхронизирует папки. Скрипт выполняет

/usr/bin/rsync -av --delete $SOURCE $DEST >> $LOG_FILE 2>> $ERR_LOG_FILE

поэтому он перенаправляет вывод в LOG_FILE и вывод ошибок в ERR_LOG_FILE.

Кроме того, я хотел бы, чтобы ошибки отправлялись root по электронной почте. Как я могу это сделать?

Если вы можете полагаться на код завершения….

/usr/bin/rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>&1 ||
    mail -s "Ошибки Rsync" [email protected] <"$LOG_FILE"

С bash:

rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>>"$ERR_LOG_FILE"
[[ -s $ERR_LOG_FILE ]] && mail -s test root < "$ERR_LOG_FILE"

.

Ответ или решение

Скрипт для синхронизации папок в Linux: перенаправление ошибок в файл и отправка по электронной почте

Вам необходимо создать скрипт для синхронизации папок с помощью rsync, который не только записывает обычный вывод и ошибки в соответствующие файлы, но и отправляет уведомления о возникнувших ошибках на электронную почту. Мы подробнее разберем, как это реализовать.

Шаг 1: Определение переменных

Перед тем как приступить к написанию скрипта, определим основные переменные:

  • $SOURCE: путь к исходной директории.
  • $DEST: путь к целевой директории.
  • $LOG_FILE: файл для сохранения стандартного вывода.
  • $ERR_LOG_FILE: файл для сохранения ошибок.

Пример объявления переменных в вашем скрипте может выглядеть так:

SOURCE="/path/to/source"
DEST="/path/to/dest"
LOG_FILE="/path/to/logfile.log"
ERR_LOG_FILE="/path/to/errorlog.log"

Шаг 2: Выполнение команды rsync

Теперь, когда переменные определены, можно написать команду rsync для синхронизации папок. Мы используем перенаправление для записи стандартного и ошибочного вывода в соответствующие файлы:

/usr/bin/rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>> "$ERR_LOG_FILE"

Шаг 3: Проверка ошибок и отправка уведомления по электронной почте

Следующим шагом будет проверка, были ли ошибки. Это можно сделать, проверяя размер файла $ERR_LOG_FILE. Если файл не пустой, то мы отправляем его содержимое по электронной почте.

Используя команду mail, напишем следующий код:

if [[ -s $ERR_LOG_FILE ]]; then
    mail -s "Ошибка Rsync" root < "$ERR_LOG_FILE"
fi

Полный скрипт будет выглядеть следующим образом:

#!/bin/bash

# Определение переменных
SOURCE="/path/to/source"
DEST="/path/to/dest"
LOG_FILE="/path/to/logfile.log"
ERR_LOG_FILE="/path/to/errorlog.log"

# Выполнение команды rsync
/usr/bin/rsync -av --delete "$SOURCE" "$DEST" >> "$LOG_FILE" 2>> "$ERR_LOG_FILE"

# Проверка наличия ошибок и отправка уведомления
if [[ -s $ERR_LOG_FILE ]]; then
    mail -s "Ошибка Rsync" root < "$ERR_LOG_FILE"
fi

Шаг 4: Запуск скрипта

Не забудьте сделать ваш скрипт исполняемым:

chmod +x ваш_скрипт.sh

Теперь вы можете запускать скрипт, чтобы синхронизировать папки. В случае возникновения ошибок, они будут записаны в файл $ERR_LOG_FILE, и вы получите уведомление по электронной почте.

Заключение

Создание скрипта для синхронизации папок с использованием rsync и отправка уведомлений об ошибках — это полезный инструмент для автоматизации задач администрирования в Linux. Убедитесь, что у вас правильно настроен демон почты на сервере для успешной отправки сообщений. Подходящее управление логами и уведомлениями поможет предотвратить возможные проблемы и повысить эффективность работы.

Оцените материал
Добавить комментарий

Капча загружается...