Imposta autoconnect su hot-spot solo quando è attiva la connessione Ethernet


8

Attualmente passo quotidianamente tra i seguenti due allestimenti:

1) Essere connessi a Internet tramite una rete WiFi.

2) Avere il mio laptop (Ubuntu 16.04) collegato a Internet tramite una connessione cablata, quindi condividere questa connessione con gli altri miei dispositivi attraverso la funzionalità hot-spot integrata di Ubuntu.

Al momento, passare da 1 a 2 richiede di passare manualmente attraverso la finestra di dialogo "Connetti a rete nascosta" in Network Manager; allo stesso modo il passaggio da 2 a 1 richiede la disconnessione manuale dall'hotspot e la connessione alla rete WiFi. Non è molto lavoro, ma lo faccio abbastanza spesso che vorrei che fosse automatizzato.

Non è semplice come abilitare la connessione automatica per l'hotspot, dal momento che sovrascrive la funzionalità di connessione automatica di altre reti invece di collegarmi a una rete WiFi quando non sono collegato tramite una connessione cablata e finisco con un hot-spot ma senza internet. Quindi ho bisogno di una soluzione che:

  • mi collega all'hot-spot ogni volta che sono connesso a Internet tramite una connessione cablata.
  • mi disconnette dall'hot-spot quando non c'è connessione ethernet.
  • mi collega automaticamente a una delle reti con autoconnect = true ogni volta che sono disponibili e non esiste una connessione Ethernet.

Una spiegazione completa su come farlo sarebbe ottima, ma sarebbe molto apprezzato anche il riferimento a un buon manuale (non esperto) per impostare questo tipo di regole.


1
Non sono sicuro al 100% di quello che fai, immagino tu usi il gestore di rete? Quindi è difficile fornire un manuale. Vorrei guardare in post-updel /etc/network/interfacescontesto, v'è una grande rassegna qui . post-upfondamentalmente chiama solo comandi o script dopo che viene visualizzata un'interfaccia.
Robert Riedl,

Sembra un buon punto di partenza. Lo esaminerò, grazie.
Bib-lost

Risposte:


2

Sono consapevole che quando si collega il cavo Ethernet che supera la connessione Wi-Fi e la connessione Wi-Fi si interrompe automaticamente. In modo simile, la disconnessione del cavo Ethernet si collega automaticamente al tuo wifi preferito (a condizione che tu abbia la casella selezionata per connettersi automaticamente a quella rete Wifi nella scheda generale del gestore della rete. Testato su un'installazione predefinita di Ubuntu 16.04.3

Quindi, se ti sto capendo correttamente, vuoi solo avviare automaticamente il servizio hotspot sul tuo laptop quando il cavo Ethernet è collegato e disabilitare il servizio quando il cavo Ethernet è disconnesso.

Questo dovrebbe essere abbastanza semplice da fare con uno script bash e nmcli'nmcli' è un potente strumento di networknig che ti consente di mettere le connessioni su e giù a piacimento e ottenere tonnellate di informazioni pertinenti.

Per scoprire per quali connessioni eseguirai lo scripting, esegui semplicemente nmcli -t monitor| grep primaryquando sei connesso tramite Wi- Fi e collega il tuo cavo Ethernet. Le connessioni che ti interessa far apparire su e giù nmclisaranno quelle circondate da 's Esempio: 'Connessione cablata 1' la logica è che quando 'Connessione' è connessa fai apparire l'hotspot (potresti trovare necessario usare il comando sleepo utilizzare l' -wopzione da effettuare nmclinello script attende un numero specificato di secondi per il completamento di un comando prima di eseguire il successivo.

Disattivare una connessione è semplice come nmcli 'connection name' downe aprirne unanmcli 'connection name' up

Nota: per il pieno controllo tramite lo script potrebbe essere necessario disabilitare effettivamente l'opzione di connessione automatica almeno per la connessione Wi-Fi in Network Manager poiché tenterà di connettersi automaticamente ogni volta che è disponibile e può interferire con ciò che si sta tentando di realizzare. Estratto da 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.

Quindi, una volta stabilito che la tua Ethernet è connessa, puoi emettere i comandi per disattivare la connessione wifi Esempio: nmcli connection my-wifi down e quindi la connessione hotspot su Esempio: nmcli connection my-hotspot up

Per ulteriori informazioni su come eseguire automaticamente gli script in base alla connessione di rete, consultare questo. Per maggiori dettagli su 'nmcli' controlla la pagina man. Ed ecco le informazioni su come creare un hotspot.


Grazie per il riferimento wiki, come non-poweruser trovo questi più facili da iniziare rispetto alle pagine man. Ti terremo aggiornato
Bib-lost

Fin qui tutto bene, ma non completamente soddisfatto della parte disabilitante di autoconnect. Sto cercando le pagine man di nmcli, ma ci sarebbe un comando per "cercare reti auto-collegabili" quando si scollega il cavo Ethernet?
Bib-lost

@ Bib-lost I miei test indicano che lasciare il wireless come auto-collegabile significa rimanere connesso quando il cavo Ethernet è collegato e ricollegarsi automaticamente se lo si abbassa manualmente. I tuoi risultati sono diversi dai miei?
Elder Geek

Non sono stato ancora in grado di eseguire gli script eseguendo il collegamento del cavo Ethernet (anche se ho seguito i passaggi nel Wiki) ma solo testando nella console, se ordino manualmente di disconnettermi da una connessione (anche se è auto-collegabile ) non si riconnette.
Bib perso il

@ Bib-lost Interessante .. Dovrò fare ulteriori test. Stai dicendo che se il wifi è impostato per connettersi automaticamente in Network Manager e lo metti giù con nmcli connection my-wifi downnon si riconnette mai?
Elder Geek

1

Soluzione che l'ha fatto per me (trovata con l'aiuto dell'anziano Geek).

Ho mantenuto la connessione automatica attiva per tutte le reti a cui voglio connettermi automaticamente, ma disattivata per l'hot-spot. Ho quindi inserito il seguente script (con le giuste autorizzazioni come descritto in questa pagina Wiki ) nella cartella/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

Questo funziona molto bene finora; connessione automatica all'hotspot ogni volta che il cavo Ethernet è collegato o anche quando il computer si avvia o si riattiva con il cavo Ethernet collegato. Deconnessione automatica dall'hotspot ogni volta che il cavo Ethernet viene estratto, seguito dalla connessione automatica alle reti WiFi disponibili.


Sono contento che tu l'abbia risolto e abbia trovato utile la mia risposta! Saluti! Come nuovo membro potresti non esserne consapevole .
Elder Geek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.