How to Bring Up a Network Interface Only If Physically Present

networking

Running Ubuntu Server 12.04 (no GUI). What would be the best way to make kernel bring a network interface up only if it is physically plugged in? So, if it doesn't exist, just move on with initializing other interfaces (if any) and continue to the login screen, without "waiting for network configuration" delay.

E.g, I have a wireless USB key wlan9 (in /etc/network/interfaces):

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

I tried allow-hotplug instead of auto, in which case the interface doesn't get initialized automatically during the boot, and I have to do it manually with ifup wlan9. This is not exactly what I'm looking for.

Thank you.

Best Answer

Also for server: use NetworkManager

  1. Install it:

    sudo apt-get install network-manager
    

    Unfortunately, this will pull in a lot of dependencies.

  2. Bring down the interface currently configured the traditional way.

    ifdown wlan9
    
  3. Disable any manual settings in /etc/network/interfaces by removing all lines concerning that interface.

  4. Add a connection setting for your wireless connection in /etc/NetworkManager/system-connections/ (make up a name):

    [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
    
    • For uuid use the command uuidgen to generate a random one.
    • For mac-address use the MAC address of your wireless adapter (use ifconfig -a wlan9 to find out). This binds this configuration file to only this adapter - if it's not present it would not use it for another adapter, nor would it wait for the adapter to be present.
    • Other fields speak for themselves I hope. :)
  5. Restart NetworkManager or reboot.

    restart network-manager
    
Related Question