Estou escrevendo um script de serviço no systemd
qual registra o uso da largura de banda a cada 1 hora. Se a rede cair,algodeve informar a este script que a rede está inativa e o script será interrompido temporariamente. Da mesma forma, se a rede estiver ativa novamente,istodeve dizer que a rede está ativa.
Estou usando o bash para escrever script no Ubuntu 15.10
Antes de sugerir uma solução, observe que não preciso de uma solução alternativa para isso, como executar ping em algum servidor.
Responder1
O melhor que você pode fazer é usar os status orientados a eventos já disponíveis no Network Manager.
Crie um arquivo
NetStatus.x
em/etc
:sudo nano /etc/NetStatus.up
Adicione o seguinte texto:
Este é o arquivo NetStatus. Se seu nome tiver uma extensão “up”, significa que o status da rede está ativo, enquanto uma extensão “down” significa que está inativo. (Duh!)
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 ;;
Modifique seu próprio script de coleta para verificar a existência
/etc/NetStatus.up
antes de realmente iniciar a coleta de dados pelo seguinte trecho de código:if [ -e /etc/NetStatus.up ] ; then #move your existing collection in here fi
Por que?
Renomear é a maneira mais rápida de alterar um status em qualquer sistema operacional, incluindo sistemas baseados em disquete, e é extremamente fácil de usar. Eu usei o sistema acima para obter status de servidor, status de backup, status de cálculo de sistemas humildes baseados em MS-DOS até supercomputadores.