问题说明了一切。我想要的是只要有可用的有线连接,就应该禁用我的W-Lan连接。在Ubuntu / Gnome中最简单的方法是什么?
在所有指南(例如一些有关guessnet的指南)中,我发现我必须配置整个网络配置(WPA密钥,DHCP等),但是对于这样一个简单的用例,我觉得有点太复杂了。我只想wlan0
在eth0
连接时禁用。
completely disable
无线局域网,而是要禁用Ubuntu,以在有线连接可用时尝试连接到任何无线局域网。因此,这是一个操作系统。
问题说明了一切。我想要的是只要有可用的有线连接,就应该禁用我的W-Lan连接。在Ubuntu / Gnome中最简单的方法是什么?
在所有指南(例如一些有关guessnet的指南)中,我发现我必须配置整个网络配置(WPA密钥,DHCP等),但是对于这样一个简单的用例,我觉得有点太复杂了。我只想wlan0
在eth0
连接时禁用。
completely disable
无线局域网,而是要禁用Ubuntu,以在有线连接可用时尝试连接到任何无线局域网。因此,这是一个操作系统。
Answers:
您可以将此脚本放置到/etc/NetworkManager/dispatcher.d/99-wlan
:
#!/bin/bash
wired_interfaces="en.*|eth.*"
if [[ "$1" =~ $wired_interfaces ]]; then
case "$2" in
up)
nmcli radio wifi off
;;
down)
nmcli radio wifi on
;;
esac
fi
之后不要忘记:
chmod +x /etc/NetworkManager/dispatcher.d/99-wlan
这将捕获旧eth*
名称和以该名称开头的新内核“可预测的命名接口”,en
然后使用总线路径或MAC地址,以使每个接口的名称在每次引导时都相同。这可以与我尝试过的USB-C(直通)和USB以太网适配器一起使用,我相信它也可以与内置适配器一起使用。
nmcli r wifi
其中无线电r
意味着
从网络管理员v0.9.10开始,必须修改第一个脚本
#!/bin/bash
if [ "$1" = "eth0" ]; then
case "$2" in
up)
nmcli radio wifi off
;;
down)
nmcli radio wifi on
;;
esac
fi
希望能帮助到你!
非常简单的gnome GUI方法...
在时钟上方,右键单击gnome面板中的网络系统指示器。(指示器将是两个图标之一;向上/向下箭头(LAN)或传统的WiFi漏斗。请注意,当同时连接LAN和WiFi或仅连接LAN时,将显示向上/向下图标,而当仅通过WiFi连接((LAN已断开))-[LAN自动胜过WiFi。*]
选择“编辑连接...”
左键单击网络图标将使无线网络可进行实时手动连接和断开操作,而NM不会一直尝试自动连接。
当然,您也可以通过右键单击网络图标,然后在“启用无线”选项上单击鼠标左键来禁用/启用无线,从而有效地调低或调高无线接口,如是否存在复选标记所示。
只是一个猜测,但我认为ifplugd可以提供帮助。使用电缆时,可以使其关闭wifi。
/etc/network/interfaces
。我不是很擅长网络方面的工作,所以我想知道在哪里可以从现有连接中获得所有需要的值?仍然希望有一个更简单的解决方案。
创建两个简单的“脚本”,脚本的名称并不重要(我只是使用wlan),并且假定只有一个有线网络接口,因此称为“ eth0” ...如果您使用“ ifconfig”进行检查不确定。请注意,这会完全禁用无线功能,而不仅仅是wlan0。(只有当您有多个无线接口并且只想禁用特定的无线接口时,这才是一个问题)
通过布尔逻辑,可以轻松地将这些脚本调整为具有两个或更多有线网络接口的情况。
确保这些脚本可以通过“ 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的早期版本或其他发行版一起使用。
nmcli radio wifi off
答案,但是我很想知道在关闭连接的两种方式下系统日志报告的内容,以查看是否更“优雅”。
这是对Cyril Fessl先前答案的改进。(我没有信誉评论。)这一个作品的Fedora以及,其中网络接口现在能有这样的名字wlan0
,wlp6s0
,em1
和enp0s20u2u1
)。此变体不会尝试匹配接口名称,而是/sys/class/net
在设备上查找信息。可在我的Fedora 21笔记本电脑(内核3.18)上运行,并且我相信它也可以在Debian> = 7上运行。
#!/ bin / sh [$#-ge 2] || 1号出口 DEBUG =假 STATEDIR = / var / run / nm-wired mkdir -p $ STATEDIR IFACE = $ 1 动作= $ 2 myname = $(基本名“ $ 0”)|| 1号出口 log(){logger -p user.info -t“ $ {myname} [$$]”“ $ IFACE / $ ACTION:$ *”; } 如果$ DEBUG; 然后 如果[-e“ / sys / class / net / $ IFACE / device”];然后 日志“ / sys / class / net / $ IFACE /设备存在” 其他 日志“ / sys / class / net / $ IFACE /设备不存在” 科幻 如果[-e“ / sys / class / net / $ IFACE / wireless”];然后 日志“ / sys / class / net / $ IFACE /无线存在” 其他 日志“ / sys / class / net / $ IFACE /无线不存在” 科幻 科幻 案例$ {ACTION} 上) rm -rf $ STATEDIR / $ IFACE #如果这不是物理设备,请勿执行任何操作。 如果[!-e“ / sys / class / net / $ IFACE / device”]; 然后 日志“ $ IFACE不是物理设备-忽略” 出口0 科幻 #如果这是无线设备,请勿执行任何操作。 如果[-d“ / sys / class / net / $ IFACE / wireless”];然后 日志“ $ IFACE不是有线设备-忽略” 出口0 科幻 #跟踪有线设备。当他们下去时, #设备节点也可以运行(例如USB以太网加密狗), #因此我们无法得知设备的类型。 触摸$ STATEDIR / $ IFACE #现在关闭WiFi。 记录“关闭WiFi” nmcli r wifi已关闭 ;; 下) #检查我们之前是否将$ IFACE识别为 #物理有线设备。 如果[!-e $ STATEDIR / $ IFACE]; 然后 日志“ $ IFACE不是有线设备-忽略” 出口0 科幻 rm -rf $ STATEDIR / $ IFACE #除了检查单个文件,我们还可以检查 #$ STATEDIR中是否仍然有文件。如果是这样,我们 #仍启用有线设备... 记录“启用WiFi” 开启nmcli r wifi ;; 埃萨克
如果您已经使用tlp进行电源管理,则它具有执行此功能的功能。
您必须修改conf文件(/ etc / default / tlp)
# Radio devices to enable/disable when docked.
#DEVICES_TO_ENABLE_ON_DOCK=""
DEVICES_TO_DISABLE_ON_DOCK="wifi wwan"
# Radio devices to enable/disable when undocked.
DEVICES_TO_ENABLE_ON_UNDOCK="wifi"
#DEVICES_TO_DISABLE_ON_UNDOCK=""
不管出于什么原因,derhoch提出的当前最佳答案对我来说都行不通,尽管它应该适用。其他一些建议确实可行,但是我想要一些非常简单的建议。因此,我正在使用以下脚本(/etc/NetworkManager/dispatcher.d/
根据eth0
的状态插入了该脚本以打开和关闭wifi 。
#! /bin/bash
# Enable/disable wlan0 depending on eth0 and wlan0 current state
eth0_status=$(cat /sys/class/net/eth0/operstate)
wlan0_status=$(cat /sys/class/net/wlan0/operstate)
if [[ "$eth0_status" = "up" ]];
then
nmcli nm wifi off
elif [[ "$wlan0_status" = "down" ]] && [[ "$eth0_status" = "down" ]];
then
nmcli nm wifi on
else
nmcli nm eth0 on
nmcli nm wlan0 off
fi
该else
语句可能是不必要的,甚至在某些情况下甚至可能是个问题,但我留在这里只是为了以防万一(如果没有该语句,则该语句eth0
将不会出现)。