Script de inicialização automática para me notificar sobre problemas de conexão

1

Minha conexão de rede às vezes não é muito estável e começa a eliminar pacotes ou a quebrar completamente de vez em quando, o que requer que eu reinicie a conexão de rede ou, às vezes, desconecte temporariamente alguns dispositivos.

Este provavelmente não é um problema do Ubuntu, mas tem a ver com as influências e interferências de hardware e ambientais.

O que eu quero é ser notificado (janela pop-up ou applet indicador) assim que minha conexão começar a falhar. Detectar isso funciona verificando as respostas de ping do meu roteador local, se eu puder alcançá-lo, tudo estará bem.

Você pode me fornecer um script que pinga meu roteador a cada segundo se a conexão estiver ativa? Ele deve verificar se há pacotes perdidos e me avisar se não voltar.

    
por Byte Commander 11.08.2015 / 17:07

1 resposta

2

Que tal:

#!/bin/bash
dev='eth0'

if { nmcli dev status | grep "^"$dev".* connected" ;} &>/dev/null; then
  while :; do
    if ping -c 4 -i 0.5 gmail.com &>/dev/null; then
        sleep 5
    else
        sleep 30
        until ping -c 4 -i 0.5 gmail.com &>/dev/null; do
          notify-send --urgency=critical "Network issue"
          sleep 30
        done
        notify-send --urgency=critical "There was a Network issue, Its Ok now"
    fi
  done
fi

Salve a interface que você deseja monitorar como variável dev .

Este script irá primeiro verificar se a conexão está em Cima, se estiver ativa, enviará 4 pacotes de solicitação de eco ICMP com intervalo de 0,5 segundos para 192.168.1.1 (assumindo que este é o endereço IP de seu roteador). Se algum dos pacotes tiver resposta de eco do roteador, ele aguardará 5 segundos antes de confirmar novamente a ping .

Agora, se todos os 4 dos pacotes não obtiverem a resposta do roteador, ele dormirá por 30 segundos, para que não fiquemos sobrecarregados pelo súbito blip da rede. Após 30 segundos, ele começará a verificar com ping novamente, se for bem-sucedido desta vez, a mensagem There was a Network issue, Its Ok now será mostrada.

Se ainda não estiver Ok, a mensagem Network issue será mostrada, depois esperará 30 segundos e iniciará o loop novamente até que qualquer resposta bem-sucedida seja recebida.

    
por heemayl 11.08.2015 / 17:24