После того, как несколько раз столкнулся с тем, что в процессе настройки сети на удалённом хосте падала сеть полностью и потом было не просто востановить доступ, был придуман данный скрипт. На период дебага ставлю его в крон раз в 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
