Немного изменил watchdog скрипт, из
этой темы, под себя. Скрипт отрабатывает нормально. Подскажите можно ли как-то улучшить данный скрипт?
#!/bin/bash
SITE="ya.ru" #проверяемый ресурс
IF="wwp6s0u2i1" #имя сетевого интерфейсв
DEV="1-1" #шина и порт модема lsusb -t
MM="Huawei" #маркер модема, можно заменить на "Huawei" или подобное из команды lsusb
EP="3" #число ошибочных пингов
M=`lsusb | grep $MM` #строка модема из lsusb
if [ "$M" != "" ]; then #если модем выбран, можно проверять пинги
echo "Делаем пинги..."
flag="0"
for i in {1..5}; do #делаем 5 пингов до сервера
timeout -k 2 -s TERM 16 ping -w 14 -s 8 -c 1 -I $IF $SITE || flag=$(($flag+1)) && echo "пинг:$i/5 (ош.:$flag)" #пинг не прошел - инкрементируем счетчик
if [ "$flag" -ge "$EP" ]; then
break
else
sleep 1
fi
done
echo "потерь пакетов: $flag из $i"
if [ "$flag" -ge "$EP" ]; then #если потерь пакетов больше 2х
M=`lsusb | grep $MM` #на всякий случай снова глянем - вдруг модем выдернули
echo "Будет сброшен модем:"
echo $M
ifdown $IF #деактивируем интерфейс
sleep 1
echo $DEV > /sys/bus/usb/drivers/usb/unbind #выключаем питание модема
sleep 1
echo $DEV > /sys/bus/usb/drivers/usb/bind #включаем питание модема
sleep 2
ifup $IF #активируем интерфейс
fi
else
echo "Модем [$MM] не найден."
lsusb
fi
P.S.
OS - CentOS 7
Modem - Huawei E3272