Перезапуск WG интерфейса если хост не доступен
Перезапускаем интрфейс wg
если удаленный хост не пингается. Скрипт перезапустит интерфейс не чаще чем раз в 10 минут. Для отправки уведомлений в телеграм используется другой скрипт, посмотреть его можно тут.
Использование: /wg_restart.sh 10.1.100.2 wg1-channel
Cron: * * * * * root /srv/scripts/wg_restart.sh 10.1.100.2 wg1-channel
#!/bin/bash
# Проверка наличия аргументов
if [ "$#" -ne 2 ]; then
echo "Использование: $0 <IP-адрес> <имя интерфейса>"
exit 1
fi
# Получаем аргументы
HOST="$1" # IP-адрес или доменное имя
WG_INTERFACE="$2" # Имя интерфейса WireGuard
# Файл для хранения времени последнего перезапуска
LAST_RESTART_FILE="/tmp/last_wg_restart_$WG_INTERFACE"
# Получаем текущее время в секундах
CURRENT_TIME=$(date +%s)
# Проверяем, когда был последний перезапуск
if [ -f "$LAST_RESTART_FILE" ]; then
LAST_RESTART=$(cat "$LAST_RESTART_FILE")
else
LAST_RESTART=0
fi
# Проверяем, прошло ли 10 минут с последнего перезапуска
if (( CURRENT_TIME - LAST_RESTART >= 600 )); then
# Проверка доступности хоста
if ! ping -c 1 "$HOST" &> /dev/null; then
# Отправляем уведомление в телегу
echo "$HOST недоступен. Перезапуск интерфейса $WG_INTERFACE..." | /srv/scripts/send_notify.sh
# Перезапуск интерфейса WireGuard
wg-quick down "$WG_INTERFACE" 2> /dev/null
wg-quick up "$WG_INTERFACE" 2> /dev/null
# Обновляем время последнего перезапуска
echo "$CURRENT_TIME" > "$LAST_RESTART_FILE"
fi
fi
[ Править ]