monitora o status da rede para o script systemd

0

Estou escrevendo um script de serviço em systemd , que registra o uso da largura de banda a cada 1 hora. Se a rede cair, algo deve informar a esse script que a rede está inativa e o script será interrompido temporariamente. Da mesma forma, se a rede estiver ativa novamente, ela deve informar que a rede está ativa.

Estou usando o bash para escrever scripts no Ubuntu 15.10

Por favor, antes de sugerir uma solução, por favor note que eu não preciso de um trabalho para isso, como ping em algum servidor.

    
por Edward Torvalds 31.10.2015 / 16:47

1 resposta

2

O melhor que você pode fazer é usar os status orientados a eventos já disponíveis no Network Manager.

  1. Crie um arquivo NetStatus.x em /etc :

    sudo nano /etc/NetStatus.up
    
  2. Adicione o seguinte texto:

    % bl0ck_qu0te%
  3. Edite /etc/NetworkManager/dispatcher.d/01ifupdown e adicione as declarações em negrito abaixo:

    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. Modifique seu próprio script de coleção para verificar a existência de /etc/NetStatus.up antes de começar a coletar dados pelo seguinte snippet de código:

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

Por quê?

A renomeação é a maneira mais rápida de alterar um status em qualquer sistema operacional, incluindo sistemas baseados em disquete e é extremamente fácil de usar. Usei o sistema acima para ter status de servidor, status de backup, status de cálculo de sistemas baseados em MS-DOS para supercomputadores.

    
por Fabby 02.11.2015 / 00:06