Как подключить сетевой интерфейс, только если он физически присутствует

Запуск Ubuntu Server 12.04 (без GUI). Каким будет лучший способ заставить ядро ​​подключить сетевой интерфейс только в том случае, если он физически подключен? Таким образом, если он не существует, просто перейдите к инициализации других интерфейсов (если есть) и перейдите к экрану входа в систему, не задерживая «ожидание сетевой конфигурации».

Например, у меня есть беспроводной USB-ключ wlan9 (в / etc / network / interfaces):

auto wlan9 iface wlan9 inet dhcp wpa-ssid myssd wpa-psk mykey wpa-proto RSN wpa-pairwise CCMP wpa-group CCMP 

Я попробовал allow-hotplug вместо auto , и в этом случае интерфейс не инициализируется автоматически во время загрузки, и я должен сделать это вручную с ifup wlan9 . Это не совсем то, что я ищу.

Спасибо.

Также для сервера: используйте NetworkManager

  1. Установите его:

     sudo apt-get install network-manager 

    К сожалению, это приведет к большому количеству зависимостей.

  2. Принесите интерфейс, который в настоящее время настроен традиционным способом.

     ifdown wlan9 
  3. Отключите все ручные настройки в /etc/network/interfaces , удалив все строки, относящиеся к этому интерфейсу.

  4. Добавьте настройку соединения для вашего беспроводного соединения в /etc/NetworkManager/system-connections/ (введите имя):

     [connection] id=Some name of my connection uuid=0d791425-87c5-45e6-948e-01b1863901f7 type=802-11-wireless [802-11-wireless] ssid=mySSID mode=infrastructure mac-address=24:77:00:01:02:03 security=802-11-wireless-security [802-11-wireless-security] key-mgmt=wpa-psk psk=mypassword [ipv4] method=auto [ipv6] method=ignore 
    • Для uuid используйте команду uuidgen для генерации случайной.
    • Для mac-address используйте MAC-адрес вашего беспроводного адаптера (используйте ifconfig -a wlan9 чтобы узнать). Это связывает этот файл конфигурации только с этим адаптером – если он отсутствует, он не будет использовать его для другого адаптера, и он не будет ждать появления адаптера.
    • Надеюсь, другие поля говорят сами за себя. 🙂
  5. Перезагрузите NetworkManager или перезагрузите компьютер.

     restart network-manager 

и перейдите к экрану входа в систему

Предполагается, что вы используете установку с поддержкой графического интерфейса (не сервер), поэтому я предоставляю этот ответ на основе этого.


Просто используйте NetworkManager

  1. Выключите интерфейс.

     ifdown wlan9 
  2. Отключите все ручные настройки в /etc/network/interfaces , удалив все строки, относящиеся к этому интерфейсу.

  3. Перейдите к настройкам сети и добавьте / отредактируйте беспроводное сетевое соединение.

  4. Настройте его следующим образом (см. Скриншот ниже):

    1. Подключить его автоматически.

    2. Примените его к правому беспроводному адаптеру, выбрав правильный MAC-адрес. Если адаптер отсутствует, то эти параметры подключения в этом диалоге не будут применяться, поэтому это «привязывает» их к этому конкретному адаптеру (поскольку каждый адаптер имеет другой MAC-адрес). И нет, это не MAC-адрес WiFi AP – это BSSID.

    3. Сделайте его доступным для всех пользователей (это автоматически подключается к экрану входа в систему). Обратите внимание, что эти настройки неактивны, пока вы не предоставите необходимые данные.

    И, конечно, также введите другие сведения о безопасности, SSID и т. Д.

    введите описание изображения здесь

Я придумал следующее решение, которое не зависит от каких-либо дополнительных пакетов:

 auto wlan9 iface wlan9 inet manual wpa-ssid MYSSD wpa-psk MYKEY wpa-proto RSN wpa-pairwise CCMP wpa-group CCMP wireless-power off pre-up if [ -f /sys/class/net/wlan9/operstate ]; then ifconfig wlan9 up; fi up if [ -f /sys/class/net/wlan9/operstate ]; then dhclient wlan9; fi 

Хотя он может быть не изящным, он делает то, что я хочу: пропускает инициализацию wlan9 без задержки загрузки, если беспроводной ключ не подключен, в противном случае он поднимается.