Criando um script bash que reconecta ao AP quando a conexão é perdida

4

Estou enfrentando problemas com o WIFI no Ubuntu Eu tentei atualizar o sistema, mas ainda o mesmo o que acontece é que de repente eu perco a conexão com o meu roteador e quando eu pressiono na barra WIFI o sistema não detecta nenhum AP Eu tenho que desmarcar a opção "enable WIFI", em seguida, re verificar isso funciona, ele reconectar automaticamente.

Estou pensando em fazer um script bash que detecta quando o PC é desconectado do roteador por qualquer motivo e, quando desconectado, desabilita e habilita o wifi. Quero dizer, como automatizar a redefinir a conexão que é possível?

eu acho que devo usar isso

nmcli nm wifi off
nmcli nm wifi on

mas como posso fazer o script saber se o PC está desconectado do WIFI?

    
por Alexander 11.11.2013 / 23:03

2 respostas

6

É mais simples do que você pensa:

#!/bin/bash

if ! [ "$(ping -c 1 google.com)" ]; then
    nmcli nm wifi off
    nmcli nm wifi on
fi

Em seguida, você pode usar um cron job para esse script ser executado a cada minuto.

    
por Radu Rădeanu 11.11.2013 / 23:23
3

Embora a resposta esteja correta, você deve levar em conta que:

1) funcionará se o usuário estiver logado ou não --- isso pode ser um comportamento desejado ou não, dependendo da aplicação;

2) se a reconexão atrasar mais de 1 minuto, você nunca chegará lá ...

Eu escrevi um script simples que posso executar com os scripts iniciais da minha sessão gráfica e que pode ser um bom candidato. Eu redireciono sua saída para um arquivo para que eu possa seguir meu utilitário SLogger.

Aqui está o script --- você nunca sabe.

#!/bin/bash
while /bin/true; do
    if ! [ "$(ping -c 1 google.com)" ]; then
        echo "Warning: connection lost at $(date) -- restart"  
        nmcli nm wifi off
        sleep 5
        nmcli nm wifi on
        sleep 60
        if ! [ "$(ping -c 1 google.com)" ]; then
             echo "Waiting for connection going up at $(date)"
             sleep 60
        else 
             echo "Connection on at $(date)" 
        fi
#    else
#        echo "Connection OK on $(date)"
    fi
sleep 60
done
    
por Rmano 21.11.2013 / 22:45