Встановіть автоматичне підключення до гарячої точки лише під час підключення до Ethernet


8

Наразі я щодня перемикаюся між цими двома налаштуваннями:

1) Підключення до Інтернету через мережу WiFi.

2) Підключивши мій ноутбук (Ubuntu 16.04) до Інтернету за допомогою дротового з’єднання, а потім поділіться цим з’єднанням з іншими моїми пристроями через вбудовану функцію гарячої точки Ubuntu.

На даний момент перемикання з 1 на 2 вимагає, щоб я вручну пройшов діалог «підключитися до прихованої мережі» у Менеджері мережі; Аналогічно, перемикання з 2 на 1 вимагає, щоб я вручну відключився від точки доступу та підключився до мережі WiFi. Це не велика робота, але я це роблю досить часто, щоб хотілося, щоб вона була автоматизованою.

Це не так просто, як увімкнути автоматичне підключення до точки доступу, оскільки тоді він переосмислює функцію автоматичного підключення інших мереж замість того, щоб підключити мене до мережі WiFi, коли я не підключений через дротовий зв’язок, і в кінцевому підсумку я отримую гарячу точку, але немає Інтернету. Тому мені потрібно рішення, яке:

  • підключає мене до гарячої точки, коли я підключений до Інтернету за допомогою дротового з’єднання.
  • відключає мене від гарячої точки, коли немає з'єднання Ethernet.
  • автоматично підключає мене до однієї з мереж з autoconnect = true коли вони доступні, і немає з'єднання Ethernet.

Повне пояснення, як це зробити, було б чудово, але посилання на хороший (неекспертний) посібник для встановлення таких правил також буде дуже вдячна.


1
Я не на 100% впевнений, що ви робите, я думаю, ви використовуєте мережевий менеджер? Так важко надати посібник. Я хотів би подивитися в post-upв /etc/network/interfacesконтексті, є великий огляд тут . post-upв основному це лише виклики команд або сценаріїв після появи інтерфейсу.
Роберт Ридл

Схоже, гарне місце для початку. Поглянемо на це, дякую.
Боб-програв

Відповіді:


2

Я розумію, що коли ви підключаєте кабель Ethernet, який перетворює з'єднання Wi-Fi, і з'єднання Wi-Fi автоматично припиняється. Аналогічним чином відключення автоматичного кабелю Ethernet підключається до вашого бажаного wifi (за умови, що у вас встановлено прапорець для автоматичного підключення до тієї мережі Wifi на загальній вкладці менеджера мережі. Тестовано на встановленні Ubuntu 16.04.3 за замовчуванням.

Тож якщо я правильно вас розумію, ви просто хочете автоматично запустити послугу гарячої точки на своєму ноутбуці, коли підключений кабель Ethernet і відключити послугу, коли кабель Ethernet відключений.

Це має бути досить простим у виконанні bash-скрипту, а nmcli'nmcli' є потужним інструментом networknig, який дозволяє підключати і знижувати з'єднання за бажанням і отримувати безліч відповідної інформації.

Щоб дізнатися, які підключення ви будете робити сценаріями, просто запустіть їх nmcli -t monitor| grep primaryпід час підключення через wifi та підключіть свій кабель Ethernet. З'єднання, з якими вам цікаво піднятись і перериватись, nmcliбудуть оточені 's Приклад: "Провідне з'єднання 1" логіка полягає в тому, що коли "З'єднання" підключено, підводять точку доступу (вам може знадобитися використовувати команду sleepабо використовувати -wперемикач , щоб nmcliу вашому очікуванні сценарію на задану кількість секунд для завершення команди перед видачею наступного.

Звести з'єднання так само просто, як nmcli 'connection name' downі відновити йогоnmcli 'connection name' up

Примітка. Для повного контролю через сценарій вам може знадобитися фактично відключити опцію автоматичного підключення принаймні для вашого з'єднання Wi-Fi у Менеджері мереж, оскільки він намагатиметься автоматично підключитися, коли це буде доступне, і може заважати тому, що ви намагаєтеся зробити. Витяг з 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.

Отже, як тільки ви визначили, що ваш Ethernet підключений, ви можете видавати команди, щоб знизити з'єднання Wi-Fi Приклад: nmcli connection my-wifi down а потім з'єднання гарячої точки Приклад: nmcli connection my-hotspot up

Детальніше про те, як автоматично запускати сценарії на основі мережевого з'єднання, див. Це. Щоб отримати докладнішу інформацію про 'nmcli', перегляньте довідкову сторінку. А ось інформація про те, як створити точку доступу.


Дякую за посилання на wiki, як мені, хто не користується користувачем, я вважаю, що це легше почати, ніж сторінки man. Буде в курсі
Боб-програв

Поки що добре, але не повністю задоволений вимикаючою частиною автовідключення. Я переглядаю сторінки man для nmcli, але чи буде команда "сканувати на автоматично підключені мережі", відключивши кабель Ethernet?
Боб-програв

@ Bib-lost Мої тести показують, що залишення бездротового зв’язку в якості автоматичного підключення призводить до того, що він залишається на зв’язку, коли кабель Ethernet підключений, і автоматично підключиться, якщо ви вручну підключите його. Чи відрізняються ваші результати від моїх?
Старійшина Гек

Мені ще не вдалося змусити сценарії виконуватись за допомогою підключення кабелю Ethernet (хоча я дотримувався кроків у Вікі), але просто тестуючи в консолі, якщо я вручну замовляю відключитися від з'єднання (навіть якщо це автоматично підключається ) він не з’єднується.
Боб-програв

@ Біб-програв Цікаво .. Мені доведеться провести подальше тестування. Ви хочете сказати, що якщо Wi-Fi налаштовано на автоматичне підключення в Менеджері мереж, і ви зведете його, nmcli connection my-wifi downвін ніколи не відновиться знову?
Старійшина Гейк

1

Рішення, яке зробило це для мене (знайдено за допомогою старійшини Гік).

Автоматичне підключення я підтримував у всіх мережах, до яких я хочу автоматично підключитися, але вимкнено для гарячої точки. Потім я кладу наступний скрипт (з правильними дозволами, як описано на цій сторінці Wiki ) у папку/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

Це дуже добре працює до цих пір; автоматичне підключення до точки доступу кожного разу, коли кабель Ethernet підключається до мережі або навіть коли комп'ютер завантажується або прокидається за допомогою підключеного кабелю Ethernet. Автоматичне відключення від гарячої точки кожного разу, коли витягується кабель Ethernet, після чого відбувається автоматичне підключення до доступних мереж WiFi.


Я радий, що ти розібрався і знайшов мою відповідь корисною! Ура! Як новий учасник, ви можете цього не знати .
Старійшина Гейк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.