Qual é a melhor maneira de verificar constantemente a conexão com a Internet em segundo plano?

2

Eu tenho um problema de capacidade com a placa de rede - a internet desaparece em algum tempo, enquanto o nível da conexão wifi não muda. Reconectar-se ao mesmo local Wi-Fi resolve esse problema.

Eu quero escrever um script de solução que verifique continuamente a conexão com a Internet (por exemplo, uma verificação por 10 segundos) e, se ele desaparecer, o script reconecte o Wi-Fi. Eu queria usar ping , mas o manual diz que é insensato usar ping durante os scripts automatizados.

$ uname -a
Linux NS-COMP 4.11.0-13-generic #19~16.04.1-Ubuntu SMP Wed Aug 2 20:06:21 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

$ lspci -knn | grep Net -A2
03:00.0 Network controller [0280]: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe [1814:3290]
    Subsystem: Foxconn International, Inc. RT3290 Wireless 802.11n 1T/1R PCIe [105b:e055]
    Kernel driver in use: rt2860
    
por ntrsBIG 30.09.2017 / 22:14

1 resposta

0

Por que o Wi-Fi continua desconectando:

De acordo com a documentação debian , você deve usar o rt2800pci em vez do rt2860 atualmente carregado. que resolve seu problema sem executar um script para reconectar-se.

um script bash de amostra

Se você precisar executar um script bash para conectar-se quando perder sua conexão wifi (recarregando o módulo do kernel + reconectar), este é um exemplo de script bash reconnect :

#!/bash/bash
if ! [ "$(ping -c1 8.8.8.8)" ]
then
    modprobe -r rt2860
    modprobe rt2800pci
    ip link set wlan0 down
    ip link set wlan0 up
fi

Para executar o script reconnect a cada 10 s:

while true ; do ./reconnect & sleep 10 ; done &

Se o wifi cair depois de algumas horas, é melhor criar um cron job para executar um script a cada 1 h: exemplo aqui

    
por 02.10.2017 / 09:29