Создайте два простых «сценария», имя сценария не важно (я просто использую wlan), и я предполагаю, что существует только один интерфейс кабельной сети, и поэтому он называется «eth0» ... Проверьте это с помощью ifconfig, если вы не уверены.
Обратите внимание, что это отключил беспроводную связь полностью, а не только wlan0. (Только проблема, если у вас есть несколько интерфейсов Wlan и вы хотите отключить только определенные)
Эти сценарии можно легко адаптировать - с помощью логической логики - к ситуации, в которой у вас есть два или более кабельных сетевых интерфейса.
Убедитесь, что эти скрипты исполняются с помощью 'chmod +x'
/etc/network/ip-up.d/wlan
#!/bin/sh
# If eth0 goes up, disable wireless
if [ "$IFACE" = "eth0" ]; then
dbus-send --system --type=method_call --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.DBus.Properties.Set string:org.freedesktop.NetworkManager string:WirelessEnabled variant:boolean:false
fi
/etc/network/if-down.d/wlan
#!/bin/sh
# If eth0 goes down, enable wireless
if [ "$IFACE" = "eth0" ]; then
dbus-send --system --type=method_call --dest=org.freedesktop.NetworkManager /org/freedesktop/NetworkManager org.freedesktop.DBus.Properties.Set string:org.freedesktop.NetworkManager string:WirelessEnabled variant:boolean:true
fi
Это включает / отключает беспроводную связь в NetworkManager, которую обычно можно найти как системный индикатор на панели Gnome.
Вы также можете использовать 'ifconfig wlan0 down' или 'ifconfig wlan0 up' вместо линии dbus-send, но это должно быть более удобным для пользователя и меньше мешать системным утилитам Ubuntu.
Протестировано с Ubuntu Desktop 10.10 и должно работать с более ранними версиями или другими дистрибутивами с использованием NetworkManager и dbus.