Como posso verificar periodicamente se minha rede está ativa e reconectar se não estiver?

2

Eu escrevi um script para verificar periodicamente se a minha rede está ativa, fazendo ping de três sites principais, desconectando e reconectando minha rede, se todos os três falharem. Esse script funciona bem na linha de comando, mesmo que eu não tenha uma sessão X. O script é assim:

#!/bin/bash

/usr/bin/notify-send -i 'dialog-information' 'Running CheckNetUp.sh' 'Checking whether network is up'

AtLeastOneSiteFound=false;

# Try to download three sites and indicate a site was found if they work
# as long as we can grab at least one site, we're good.
# Otherwise, we'll disconnect and reconnect.

/usr/bin/wget --spider --read-timeout=15 http://google.ca
if [ "$?" = 0 ]; then
  AtLeastOneSiteFound=true;
fi

/usr/bin/wget --spider --read-timeout=15 http://facebook.com
if [ "$?" = 0 ]; then
  AtLeastOneSiteFound=true;
fi

/usr/bin/wget --spider --read-timeout=15 http://wikipedia.org
if [ "$?" = 0 ]; then
  AtLeastOneSiteFound=true;
fi

if [ "$AtLeastOneSiteFound" = false ]; then
  # Disconnect my wifi (and, consequently, VPN)
  /usr/bin/nmcli dev disconnect wlp0s20u2
  # Bring my wifi up
  /usr/bin/nmcli con up uuid e23f4af0-7411-4f4e-8d3c-a7cd35b607e1
  # Bring my VPN up
  /usr/bin/nmcli con up uuid 6b0f8740-df8e-411e-adeb-bcf70ced772f
fi

Aqui está o problema: o script falha no cron com esta mensagem de erro quando tenta abrir o wifi:

Error: Connection activation failed: Not authorized to control networking.

Eu encontrei um monte de potenciais soluções online, mas sem sorte até agora. O mais promissor parecia ser tornar as conexões do sistema de conexões Wi-Fi e VPN / acessíveis a todos os usuários com as senhas na configuração de texto, mas isso não alterou nada.

EDIT: O script está sendo executado sob meu usuário no crontab e quando executado manualmente.

    
por Dylan 03.09.2014 / 01:39

1 resposta

-1

Wi-Fi?

Você pode fazer ping em seu próprio roteador em vez de em "sites principais", sempre há uma pequena chance de a conexão continuar caindo em algum lugar do seu lado, em vez dos servidores ou roteadores do seu ISP. De fato, a abordagem do script é excelente, continue fazendo ping no lado da LAN com intervalo crescente e veja quanto tempo leva para a conexão cair? Se sua rede permanecer mais longa do que o que você considera definitivo, ENTÃO só considere efetuar ping no lado da WAN. Eu recomendaria substituir os nomes de host com endereços IP, porém, para ping repetidamente os inúmeros roteadores da Internet (que devem estar bem) em vez de qualquer servidor DNS específico da Internet (o que pode NÃO ser OK pelo administrador)?

O fato de sua conexão com a Internet continuar caindo pode ter a ver com seus scripts, com o recurso limitado ao acesso wget-to? Então, o seu gerenciamento de energia no BIOS (eu realmente não tenho certeza de como isso afeta o seu kernel atual) e, finalmente, a resposta do seu ISP para seus problemas. Novamente, nem mesmo em meus sonhos acordados eu consideraria o Wi-Fi para me mostrar problemas de conexão com a Internet.

Conecte-se por cobre ou por fibra e, por favor, repita sua postagem.

    
por 03.09.2014 / 02:45