Захват выходных данных с помощью bash для регистрации и предупреждения пользователя

Я изменяю сценарий резервного копирования, чтобы сохранить несколько серверов с несколькими службами и различными конфигурациями, используя bash на сервере Ubuntu.

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

Я искал по всему Интернету. и я не У меня нет удовлетворительного ответа, поэтому я сейчас прошу вас ...

Как лучше всего это сделать?

Следует ли мне использовать отдельную конфигурацию для каждого сервера? Или каждая служба получает свой файл сценария, вызывающий то, что ей нужно? Должен ли я использовать исходный код или выполнять сценарии? Как я могу просто узнать, возникла ли ошибка, не повлиявшая на журналы?

NB: Первоначально я писал по адресу https://superuser.com/questions/1155495/capture-outputs-with-bash-to-log -it-and-alert-user , но это кажется более подходящим для Server Fault. Я удалю его, если вы подтвердите.

0
задан 20 March 2017 в 12:16
2 ответа

Для захвата вывода из скриптов вы можете либо перенаправить вывод сценария в файл журнала.

my_script.sh 2>&1 >> log.txt

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

#!/bin/bash
# my_script.sh
command_1 2>&1 >> log.txt
command_2 2>&1 >> log.txt

2> & 1 гарантирует, что ошибки также будут обнаружены.

1
ответ дан 4 December 2019 в 11:44

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

subject="Backup Log"
# >/some/log.txt will delete the file if it already exists
# "if ! command" checks to see if the command exited with an nonzero code
if ! backup_command >/some/log.txt 2>&1; then
  subject="$subject First Backup Failed"
fi
# >>/some/log.txt will append output to the file
if ! other_backup_command >>/some/log.txt 2>&1; then
  subject="$subject Second Backup Failed"
fi
# etc
mail -s "$subject" < /some/log.txt

Это предполагает, что ваши команды резервного копирования используют свои код выхода, указывающий на сбой.

3
ответ дан 4 December 2019 в 11:44

Теги

Похожие вопросы