Configure a conexão automática para hot-spot somente quando a conexão Ethernet

8

Atualmente, alterno entre as duas configurações a seguir diariamente:

1) Estar conectado à Internet através de uma rede Wi-Fi.

2) Ter meu laptop (Ubuntu 16.04) conectado à Internet através de uma conexão com fio e depois compartilhar essa conexão com meus outros dispositivos através da funcionalidade interna de hot spot do Ubuntu.

No momento, mudar de 1 para 2 exige que eu acesse manualmente o diálogo "conectar à rede oculta" no Gerenciador de Rede; Da mesma forma, alternar de 2 para 1 exige que eu desconecte manualmente do ponto de acesso e conecte-se à rede WiFi. Não dá muito trabalho, mas faço-o com frequência suficiente para que seja automatizado.

Não é tão simples como ativar a conexão automática para o ponto de acesso, pois substitui a funcionalidade de conexão automática de outras redes em vez de me conectar a uma rede WiFi quando não estou conectado por uma conexão com fio e acabo com um ponto de acesso, mas sem internet. Então, eu preciso de uma solução que:

  • me conecta ao hot spot sempre que estou conectado à Internet por uma conexão com fio.
  • me desconecta do hot spot quando não há conexão Ethernet.
  • autoconecta-me a uma das redes com autoconnect = true sempre que estiverem disponíveis e não houver conexão Ethernet.

Uma explicação completa sobre como fazer isso seria ótima, mas também seria muito apreciada uma referência a um bom manual (não especialista) para configurar esse tipo de regra.

Babador-perdido
fonte
1
Não tenho 100% de certeza do que você faz, acho que você usa o gerenciador de rede? Portanto, é difícil fornecer um manual. Eu examinaria post-upo /etc/network/interfacescontexto, há uma ótima visão geral aqui . post-upbasicamente chama apenas comandos, ou scripts, depois que uma interface é exibida.
Robert Riedl
Parece um bom lugar para começar. Vai olhar para ele, obrigado.
Bib-lost

Respostas:

2

Entendo que quando você conecta o cabo Ethernet que supera a conexão wifi, a conexão wifi cai automaticamente. De maneira semelhante, desconectar o cabo Ethernet se conecta automaticamente ao seu wifi preferido (desde que você tenha a caixa marcada para se conectar automaticamente a essa rede Wifi na guia geral do gerenciador de rede. Testado em uma instalação padrão do Ubuntu 16.04.3

Portanto, se estou entendendo corretamente, você só deseja iniciar automaticamente o serviço de ponto de acesso no seu laptop quando o cabo Ethernet estiver conectado e desativar o serviço quando o cabo Ethernet estiver desconectado.

Isso deve ser bastante simples de fazer com um script bash e nmcli 'nmcli' é uma poderosa ferramenta de rede que permite que você instale desative conexões à vontade e obtenha toneladas de informações relevantes.

Para descobrir para quais conexões você criará scripts, basta executar nmcli -t monitor| grep primaryquando conectado via wifi e conectar seu cabo Ethernet. As conexões que você está interessado em ativar e desativar nmcliserão aquelas cercadas por 's Exemplo: 'Conexão com fio 1' a lógica é que, quando 'Conexão' estiver conectada, ative o ponto de acesso (você pode achar necessário usar o comando sleepou utilizar a -wopção a ser executada nmcliem seu script aguarda um número especificado de segundos para que um comando seja concluído antes de emitir o próximo.

Desativar uma conexão é tão simples quanto nmcli 'connection name' downabrir uma énmcli 'connection name' up

Nota: Para controle total por meio do script, talvez seja necessário desativar a opção de conexão automática, pelo menos para sua conexão wifi no Gerenciador de rede, pois ela tentará se conectar automaticamente sempre que estiver disponível e poderá interferir no que você está tentando realizar. Trecho de man nmcli:

There may be multiple connections that apply
       to a device, but only one of them can be active on that device at any
       given time. The additional connections can be used to allow quick
       switching between different networks and configurations.

Portanto, depois de determinar que a sua Ethernet está conectada, você pode emitir os comandos para desativar a conexão wifi. Exemplo: nmcli connection my-wifi down e a conexão do hotspot. Exemplo: nmcli connection my-hotspot up

Para saber mais sobre como executar scripts automaticamente com base na conexão de rede, consulte isso. Para mais detalhes sobre 'nmcli', consulte a página de manual. E aqui estão as informações sobre como criar um ponto de acesso.

Elder Geek
fonte
Obrigado pela referência do wiki, como não-usuário de energia acho mais fácil começar com isso do que as páginas de manual. Vai mantê-lo informado
Bib-lost
Até agora tudo bem, mas não completamente satisfeito com a parte de desativação de conexão automática. Estou procurando nas páginas de manual o nmcli, mas haveria um comando para 'procurar redes conectáveis ​​automaticamente' ao desconectar o cabo ethernet?
Bib-lost
@ Bib-lost Meus testes indicam que deixar o wireless como conectável automaticamente resulta em permanecer conectado quando o cabo Ethernet estiver conectado e reconectando automaticamente se você o desligar manualmente. Seus resultados são diferentes dos meus?
Elder Geek
Ainda não consegui executar scripts ao conectar o cabo Ethernet (embora eu tenha seguido as etapas no Wiki), mas apenas testando no console, se eu pedir manualmente para me desconectar de uma conexão (mesmo que seja conectável automaticamente) ) não reconecta.
Bib-lost
@ Bib-perdido Interessante .. Eu vou ter que fazer mais testes. Você está dizendo que, se o wifi estiver configurado para se conectar automaticamente no Network Manager e você o derrubar, nmcli connection my-wifi downele nunca se reconectará?
Elder Geek
1

Solução que fez isso por mim (encontrada com a ajuda do Elder Geek).

Eu mantive autoconnect em todas as redes que eu quero para se conectar automaticamente, mas fora para o hot-spot. Em seguida, coloquei o seguinte script (com as permissões corretas, conforme descrito nesta página do Wiki ) na pasta/etc/NetworkManager/dispatcher.d

!/bin/bash

interf=$1
state=$2

if [ $interf = "my-ethernet-device" -a $state = "up" ]; then
    nmcli connection up 'my-hotspot'
fi

if [ $interf = "my-ethernet-device" -a $state = "down" ]; then
    nmcli connection down 'my-hotspot'
fi

Isso funciona muito bem até agora; conexão automática ao ponto de acesso sempre que o cabo Ethernet estiver conectado ou mesmo quando o computador inicializar ou acordar com o cabo Ethernet desconectado automaticamente do hot spot sempre que o cabo Ethernet for puxado, seguido pela conexão automática às redes Wi-Fi disponíveis.

Babador-perdido
fonte
Estou feliz que você tenha resolvido e achou minha resposta útil! Felicidades! Como um novo membro, você pode não estar ciente disso.
Elder Geek