Задать вопрос
wmlex
@wmlex

Как можно улучшить скрипт на BASH?

Немного изменил 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
  • Вопрос задан
  • 528 просмотров
Подписаться Оценить Комментировать
Решения вопроса 1
wmlex
@wmlex Автор вопроса
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы