Skonfiguruj automatyczne połączenie z punktem dostępowym tylko w przypadku połączenia Ethernet

8

Obecnie codziennie przełączam się między następującymi dwoma ustawieniami:

1) Połączenie z Internetem za pośrednictwem sieci WiFi.

2) Mając laptopa (Ubuntu 16.04) podłączonego do Internetu za pomocą połączenia przewodowego, a następnie udostępniając to połączenie innym moim urządzeniom za pośrednictwem wbudowanej funkcji hot-spot Ubuntu.

W tej chwili zmiana z 1 na 2 wymaga ręcznego przejścia przez okno dialogowe „Połącz z ukrytą siecią” w Menedżerze sieci; podobnie przełączanie z 2 na 1 wymaga ręcznego odłączenia się od hotspotu i połączenia z siecią Wi-Fi. To nie jest dużo pracy, ale robię to wystarczająco często, że chciałbym, aby było zautomatyzowane.

Nie jest to tak proste, jak włączenie autoconnect dla hotspotu, ponieważ wtedy zastępuje funkcję autoconnect innych sieci zamiast podłączania mnie do sieci Wi-Fi, gdy nie jestem połączony za pomocą połączenia przewodowego, i kończę na hot-spot, ale brak internetu. Potrzebuję więc rozwiązania, które:

  • łączy mnie z hot-spotem, ilekroć jestem podłączony do Internetu za pośrednictwem połączenia przewodowego.
  • odłącza mnie od hot-spotu, gdy nie ma połączenia z siecią Ethernet.
  • automatycznie łączy mnie z jedną z sieci z autoconnect = true, gdy tylko są one dostępne i nie ma połączenia Ethernet.

Pełne wyjaśnienie tego, jak to zrobić, byłoby świetne, ale bardzo mile widziane byłoby również odniesienie do dobrego (nie-eksperckiego) podręcznika dotyczącego ustanawiania tego rodzaju reguł.

Zgubiony na szelkach
źródło
1
Nie jestem w 100% pewien, co robisz. Myślę, że używasz menedżera sieci? Więc trudno jest dostarczyć instrukcję. Chciałbym spojrzeć post-upw /etc/network/interfaceskontekście istnieje wielka przegląd tutaj . post-uppo prostu wywołuje polecenia lub skrypty po pojawieniu się interfejsu.
Robert Riedl
Wygląda na dobre miejsce do rozpoczęcia. Przyjrzę się temu, dzięki.
Bib-stracony

Odpowiedzi:

2

Rozumiem, że po podłączeniu kabla Ethernet przebija połączenie Wi-Fi, a połączenie Wi-Fi automatycznie się przerywa. W podobny sposób, odłączenie kabla Ethernet automatycznie łączy się z preferowanym Wi-Fi (oczywiście pod warunkiem, że masz zaznaczone pole wyboru, aby automatycznie łączyć się z tą siecią Wi-Fi na ogólnej karcie menedżera sieci. Testowane przy domyślnej instalacji Ubuntu 16.04.3

Więc jeśli rozumiem cię poprawnie, po prostu chcesz automatycznie uruchomić usługę hotspot na swoim laptopie, gdy kabel Ethernet jest podłączony i wyłączyć usługę, gdy kabel Ethernet jest odłączony.

Powinno to być dość proste w przypadku skryptu bash, a nmcli„nmcli” to potężne narzędzie sieciowe, które pozwala na dowolne zwiększanie i zmniejszanie liczby połączeń oraz uzyskiwanie ton odpowiednich informacji.

Aby dowiedzieć się, jakie połączenia będziesz wykonywać w skryptach, po prostu uruchom je nmcli -t monitor| grep primarypo połączeniu przez Wi-Fi i podłącz kabel Ethernet. Połączenia, którymi chcesz się poruszać w górę iw dół nmcli, to te otoczone przez 's Przykład: „Połączenie przewodowe 1” logika polega na tym, że po podłączeniu „Połączenia” wywołujesz hotspot (może być konieczne użycie polecenia sleeplub wykorzystanie -wprzełącznik, aby nmcliw oczekiwaniu skryptu na określoną liczbę sekund na komendę do pełna przed wydaniem następnego.

Przerwanie połączenia jest tak proste, jak nmcli 'connection name' downi podniesienie gonmcli 'connection name' up

Uwaga: Aby uzyskać pełną kontrolę za pomocą skryptu, może być konieczne wyłączenie opcji automatycznego łączenia przynajmniej w przypadku połączenia Wi-Fi w Menedżerze sieci, ponieważ spróbuje ona automatycznie połączyć się, gdy tylko będzie dostępna, i może zakłócać to, co próbujesz osiągnąć. Fragment 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.

Więc kiedy już ustalisz, że twój Ethernet jest podłączony, możesz wydać polecenia, aby przerwać połączenie Wi-Fi Przykład: nmcli connection my-wifi down a potem połączenie Hotspot w górę Przykład: nmcli connection my-hotspot up

Aby uzyskać więcej informacji na temat automatycznego uruchamiania skryptów opartych na połączeniu sieciowym, zobacz to. Aby uzyskać więcej informacji na temat „nmcli”, sprawdź stronę podręcznika . A oto informacje o tym, jak utworzyć punkt dostępu.

Starszy Geek
źródło
Dzięki za odniesienie do wiki, jako nieużytkownik uważam, że łatwiej jest zacząć od stron man. Będę cię informować
zgubiony w
Jak dotąd tak dobrze, ale nie do końca zadowolony z wyłączenia części autoconnect. Przeglądam strony podręcznika w poszukiwaniu nmcli, ale czy istnieje polecenie „skanowania w poszukiwaniu sieci z możliwością automatycznego podłączenia” po odłączeniu kabla Ethernet?
Zgubiony na szelkach
@ Bib-lost Moje testy wskazują, że pozostawienie połączenia bezprzewodowego jako automatycznego połączenia powoduje, że pozostaje on podłączony, gdy kabel Ethernet jest podłączony, i automatycznie łączy się ponownie, jeśli ręcznie go odłączysz. Czy twoje wyniki są inne niż moje?
Starszy Geek
Nie byłem jeszcze w stanie uruchomić skryptów po podłączeniu kabla Ethernet (chociaż postępowałem zgodnie z instrukcjami na Wiki), ale po prostu testowałem w konsoli, jeśli ręcznie rozkazuję rozłączyć się z połączeniem (nawet jeśli jest to automatyczne połączenie ) nie łączy się ponownie.
Zgubiony na szelkach
@ Bib-lost Interesujące .. Będę musiał zrobić dalsze testy. Czy mówisz, że jeśli Wi-Fi jest ustawione na automatyczne połączenie w Menedżerze sieci i sprowadzasz go nmcli connection my-wifi down, nigdy się nie łączy?
Elder Geek
1

Rozwiązanie, które mi to zrobiło (znalezione przy pomocy Starszego Geka).

Ciągle AutoConnect na wszystkich sieciach chcę, aby automatycznie połączyć się, ale się do hot-spot. Następnie umieszczam następujący folder (z odpowiednimi uprawnieniami, jak opisano na tej stronie Wiki ) w folderze/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

Jak dotąd działa to bardzo dobrze; automatyczne połączenie z hotspotem za każdym razem, gdy kabel Ethernet jest podłączony, a nawet gdy komputer uruchamia się lub budzi z podłączonym kablem Ethernet. Automatyczne połączenie z hot-spot po każdym odłączeniu kabla Ethernet, a następnie automatyczne połączenie z dostępnymi sieciami WiFi.

Zgubiony na szelkach
źródło
Cieszę się, że udało Ci się to uporządkować i uznałeś moją odpowiedź za przydatną! Twoje zdrowie! Jako nowy członek możesz nie być tego świadomy .
Starszy Geek