Что делать, если сервер внезапно теряет соединение? Вручную перезапускать сетевой интерфейс? Можно автоматизировать этот процесс.
1. Простая проверка доступности сети. Начнем с базового скрипта, который проверяет соединение и перезапускает сеть, если пинг не проходит.
#!/bin/bash
TARGET="8.8.8.8" # IP-адрес для проверки (Google DNS)
INTERFACE="eth0" # Ваш сетевой интерфейс
if ! ping -c 4 $TARGET &> /dev/null; then
echo "$(date) - Потеряно соединение! Перезапускаю сеть..." >> /var/log/network_recovery.log
systemctl restart networking
systemctl restart NetworkManager # Для дистрибутивов с NetworkManager
ip link set $INTERFACE down && sleep 2 && ip link set $INTERFACE up
else
echo "$(date) - Сеть работает нормально" >> /var/log/network_recovery.log
fi
🔗 Как работает:
Пингует 8.8.8.8 (можно заменить на свой сервер).
Если нет ответа, записывает событие в лог и перезапускает сетевой интерфейс.
Если сеть работает, просто пишет статус в лог.
Автозапуск каждые 5 минут: Добавьте в crontab:
*/5 * * * * /path/to/network_check.sh
2. Авто-переключение на резервный интерфейс. Если ваш сервер поддерживает несколько сетевых интерфейсов (например, eth0 и eth1), можно автоматически переключаться на резервный:
#!/bin/bash
TARGET="8.8.8.8"
PRIMARY_IF="eth0"
SECONDARY_IF="eth1"
if ! ping -c 4 $TARGET &> /dev/null; then
echo "$(date) - Основной интерфейс $PRIMARY_IF не отвечает, переключаюсь на $SECONDARY_IF" >> /var/log/network_recovery.log
ip route del default
ip route add default via 192.168.1.2 dev $SECONDARY_IF
else
echo "$(date) - Основной интерфейс $PRIMARY_IF работает" >> /var/log/network_recovery.log
fi
🔗 Как работает:
Если основной интерфейс не отвечает, переключается на резервный.
Изменяет маршрут по умолчанию на резервное подключение.
3. Авто-переключение на резервный VPN. Если ваш сервер использует VPN, можно автоматически переключаться между провайдерами:
#!/bin/bash
VPN_PRIMARY="vpn1"
VPN_SECONDARY="vpn2"
if ! ping -c 4 10.8.0.1 &> /dev/null; then
echo "$(date) - Основной VPN не отвечает, переключаюсь на резервный $VPN_SECONDARY" >> /var/log/network_recovery.log
systemctl restart openvpn@$VPN_SECONDARY
else
echo "$(date) - VPN работает стабильно" >> /var/log/network_recovery.log
fi
🔗 Как работает:
Проверяет доступность VPN (например, 10.8.0.1).
Если основной VPN не отвечает, переключается на резервный сервер.
BashTex 📱 #bash