Что нибудь типа того
Автор сообщения в Telegram: Sudarikov Ilya
Ссылка на сообщение в Telegram
Код:
#!/bin/bash
# Настройки
TARGETS=("8.8.8.8" "1.1.1.1") # Цели для пинга
MAX_FAILS=3 # Допустимое количество неудач
INTERVAL=60 # Интервал проверки (сек)
LOG_FILE="/var/log/modem-watchdog.log"
USB_PORT=2 # Номер USB-порта (настройте!)
# Функция перезагрузки модема
usb_action() {
uhubctl -l $USB_PORT -a cycle
echo "$(date) - Модем перезагружен" >> "$LOG_FILE"
}
# Проверка соединения
check_connection() {
for target in "${TARGETS[@]}"; do
if ping -c 1 -W 2 "$target" > /dev/null 2>&1; then
return 0
fi
done
return 1
}
# Основной цикл
fail_count=0
while true; do
if check_connection; then
fail_count=0
else
((fail_count++))
echo "$(date) - Ошибка подключения ($fail_count/$MAX_FAILS)" >> "$LOG_FILE"
if [ "$fail_count" -ge "$MAX_FAILS" ]; then
echo "$(date) - Перезагрузка модема..." >> "$LOG_FILE"
usb_action
fail_count=0
sleep 300 # Ожидание после перезагрузки
fi
fi
sleep $INTERVAL
done
Автор сообщения в Telegram: Sudarikov Ilya
Ссылка на сообщение в Telegram