Скрипт востановления конфига сети в случае сбоя

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

 

#!/bin/bash

# Скрипт для востановления настроек сети на случай, если на сервере пропадёт интернет в следствии неправильной настройки сети
# Для работы нужен ifupdow2, ставиться через apt-get install ifupdown2


host=${1:-'8.8.8.8'}                                        # Хост который будет пинговатся, по умолчанию гугл или первый аргумент
source='/etc/network/interfaces_work'                       # Заведомо рабочий конфиг сети
destination='/etc/network/interfaces'                       # Системный конфиг сети
fail_conf='/etc/network/interfaces_fail'                    # Сюда будут сложенные неудачные конфиги
DATE=`date +"%H:%M %d/%m/%Y"`                               # Дата и время
log=/home/network_restore.log                               # Лог файл


result=$(ping -c 1 $host | grep % | cut -d ' ' -f6)         # Пингуем и сохраняем результат
if [[ "$result" = '0%' ]];then                              # Если всё ок
    echo $DATE ok   >> $log                                 # Логируем
else                                                        # Если нет пинга
    echo $DATE fail >> $log                                 # Логируем
    echo $DATE >> $fail_conf                                # Логируем

    echo >> $fail_conf                                      # Просто для удобства
    echo >> $fail_conf
    echo >> $fail_conf
    echo '###################################################' >> $fail_conf

    cat $destination >> $fail_conf                          # Сохраняем неудачный конфиг
    cat $source > $destination                              # Переписываем

    ifdown -a                                               # Гасим сеть
    ifup -a                                                 # Поднимаем сеть с новыми настройками

#   sleep 30
#   result=$(ping -c 1 $host | grep % | cut -d ' ' -f6)     # Пингуем и сохраняем результат
#
#   if [[ "$result" = '0%' ]];then                          # Если всё ок
#       echo ok                                             #
#   else                                                    #
#       reboot                                              # Если не помогло, пробуем перегрузить систему
#   fi
fi

 

 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *