мониторинг состояния сети для скрипта systemd

мониторинг состояния сети для скрипта systemd

Я пишу скрипт сервиса systemd, который регистрирует использование полосы пропускания каждый час. Если сеть падает,что-нибудьдолжен сообщить этому скрипту, что сеть упала и скрипт временно остановится. Аналогично, если сеть снова работает,этодолжен сообщить ему, что сеть работает.

Я использую bash для написания скрипта на Ubuntu 15.10.

Прежде чем предлагать решение, учтите, что мне не нужен обходной путь, вроде отправки пинга на какой-либо сервер.

решение1

Лучшее, что вы можете сделать, — это использовать статусы, управляемые событиями, которые уже доступны в Network Manager.

  1. Создайте файл NetStatus.xв /etc:

    sudo nano /etc/NetStatus.up
    
  2. Добавьте следующий текст:

    Это файл NetStatus. Если его имя имеет расширение "up", это означает, что состояние сети up, тогда как расширение "down" означает, что она down. (Да!)

  3. Отредактируйте /etc/NetworkManager/dispatcher.d/01ifupdownи добавьте выделенные жирным шрифтом утверждения ниже:

    case "$2" in
        up|vpn-up)
            export MODE="start"
            export PHASE="post-up"
            exec run-parts /etc/network/if-up.d
            mv /etc/NetStatus.down /etc/NetStatus.up
            ;;
        down|vpn-down)
            export MODE="stop"
            export PHASE="post-down"
            exec run-parts /etc/network/if-post-down.d
            mv /etc/NetStatus.up /etc/NetStatus.down
            ;;
    
  4. Измените свой собственный скрипт сбора данных, чтобы проверить его существование /etc/NetStatus.upдо начала фактического сбора данных, используя следующий фрагмент кода:

    if [ -e /etc/NetStatus.up ] ; then
      #move your existing collection in here
    fi
    

Почему?

Переименование — самый быстрый способ изменения статуса в любой ОС, включая системы на основе дискет, и он чрезвычайно прост в использовании. Я использовал указанную выше систему для получения статусов серверов, статусов резервного копирования, статусов вычислений от простых систем на основе MS-DOS до суперкомпьютеров.

Связанный контент