Если я не ошибаюсь, это - действительно функция NIC\driver в сервере а не переключателе. Это кажется, что Вы желаете настроить SFT (переключите отказоустойчивость), конфигурация на каждом сервере. Я никогда не видел сделанный на уровне коммутатора, только на уровне сервера. что NIC имеют серверы, и они поддерживают объединение в команду?
Насколько я - осведомленный etherchannel (и агрегирование каналов) имеют отношение к агрегации пропускной способности, обеспеченной через связывание нескольких адаптеров, но не обеспечивают отказоустойчивости в том смысле, что Вы ищете.
Идеально Вы хотели бы, чтобы Ваш резервный сценарий ничего не произвел, если все идет как ожидалось, и только произведите вывод, когда что-то идет не так, как надо. Затем используйте переменную среды MAILTO для отправки любого вывода, сгенерированного сценарием на адрес электронной почты.
MAILTO=email@example.com
0 */2 * * * /bin/backup.sh
Если Ваш сценарий обычно производит вывод, но Вы не заботитесь об этом в кроне, просто отправил его в/dev/null, и он пошлет Вам по электронной почте только, когда что-то будет записано в stderr.
MAILTO=email@example.com
0 */2 * * * /bin/backup.sh > /dev/null
Вы конкретно сообщаете cron
всегда посылать электронное письмо, даже когда /bin/backup.sh
(между прочим, это должно быть в /usr/local/bin
) успешно выполняется. Просто опустите | mail -s "Backup status" email@example.com
часть и электронная почта будут только отправлены, когда там будет произведен. Вы можете, вероятно (в зависимости от Вашего cron
) явно установите адрес электронной почты на почту к как присвоение в crontab файле.
Для получения дополнительной информации посмотрите
man 5 crontab
Использование сценария оболочки cronic кажется хорошей идеей; чтобы использовать его, вам не нужно менять свои сценарии.
Вместо:
0 1 * * * /bin/backup.sh 2>&1 | mail -s "Backup status" email@example.com
do:
MAILTO=email@example.com
0 1 * * * cronic /bin/backup.sh
Проще говоря; он будет работать беззвучно, если все работает нормально (статус выхода 0), но в противном случае он будет сообщать подробные сведения и позволить cron обрабатывать почтовые отчеты.
Дополнительная информация на https://habilis.net/cronic/ .
Вот еще один вариант, который я успешно использовал в течение многих лет - захват вывода и его распечатка только при ошибке , запускающей электронную почту. Для этого не требуются временные файлы, а сохраняет весь вывод . Важной частью является 2> & 1
, который перенаправляет STDERR на STDOUT.
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT"
(адрес также можно изменить, установив MAILTO = xxxx для всего файла crontab)
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || echo "$OUTPUT" | mail -s "Failed to backup" an@email.address
1 2 * * * root OUTPUT=`flexbackup -set all 2>&1` || {echo "$OUTPUT" ; ls -ltr /backup/dir ; }
Это будет работать для простых команд. Если вы имеете дело со сложными каналами ( find / -type f | grep -v bla | tar something-or-other
), вам лучше переместить команду в сценарий и запустить сценарий, используя вышеупомянутый подход. Причина в том, что если какая-либо часть канала выводится в STDERR, вы все равно будете получать электронные письма.