使用if-up和if-down脚本在eth1插入时禁用无线function

我正在尝试configuration我的networking接口。 当我插入以太网电缆时,我想使无线接口被禁用。 当我拿走以太网电缆时,我的无线接口应该再次启用。

我创build了/etc/network/if-up.d/wlan-down:

#!/bin/sh [ "$IFACE" != "eth1" ] || exit 0 ifdown wlan0 exit 0 

和/etc/network/if-down.d/wlan-up:

 #!/bin/sh [ "$IFACE" != "eth1" ] || exit 0 ifup wlan0 wpa_cli -i wlan0 reassociate exit 0 

但它似乎并没有工作。 WPA仍然试图连接所有的时间。 我可以看到wlan0一直出现并消失。 我的问题是:

  1. 我怎样才能debugging这些脚本,例如发生了什么,执行了什么?
  2. 什么是正确的方式来实现我所追求的?
  3. 而且,当我断开以太网电缆时似乎没有任何反应。 接口启动并分配IP地址。 我想在这种情况下,以便我可以使用无线。

我正在使用Debian unstable

这是一个桌面系统? 你有没有考虑过使用networkingpipe理员或wicd 。 这些工具会自动为您处理大量的这些工作。

我怎样才能debugging这些脚本,例如发生了什么,执行了什么?

你可能想使用类似logger的东西来提交debugging信息到系统日志。 或者你可以在这里和那里简单地放入几个echo命令来将某些东西写入某个文件。

这里有一个可能的“未经testing”的解决scheme,

在/ etc / network / interfaces中

 allow-hotplug eth0 iface eth1 inet dhcp down ifconfig wlan0 up down wpa_cli -i wlan0 reassociate up ifconfig wlan0 down allow-hotplug wlan0 iface wlan0 inet dhcp up ifconfig eth0 down down ifconfig eth0 up 

以及我的5美分,我使用上面的设置来修改路由基于接口上/下在我的服务器上,它也可能为你工作,因为我使用接口文件是我的脚本似乎并没有执行/ifup.d目录甚至与755。

让我知道,如果它工作不幸,我没有一个与WiFi卡的Debian机testing:(

看起来像ifplugd包有我需要的所有脚本! 安装后:

 apt-get install ifplugd 

并将eth1添加到configuration文件/etc/default/ifplugd一切开始按照我的/etc/default/ifplugd工作,不需要添加任何额外的脚本(我将所有内容都清理到了初始状态)。

感谢大家的帮助

我仍然认为在无线接口上调整度量标准是一个很好的select,正如我如何configurationwpa_supplicant使我的wlan接口在我插入以太网电缆时被禁用?

你想在/ etc / network / subtree中设置一些东西,或许可以通过增加wifi路由度量来提示,或者通过一些其他的方式在/etc/network/if-up.d/中包含一个自定义脚本如果以太网接口出现,那将会把wifi接口closures。

有关为/etc/network/if-up.d/创build脚本的信息位于“IFACE OPTIONS”部分下的interfaces手册页上。

问题是你不能recursion运行ifup / down。 我试图做一些类似的事情,当WAN接口出现时,我想调出一个VPN接口。

我的解决scheme是:

 echo ifup vpn0 | at now >/dev/null 2>&1 

要在插入或拔出电缆时自动打开和closures接口,请从相同名称的包装中使用ifplugd。

嗯评论不喜欢的代码。

 #!/bin/bash interval=5 while [ 0 -lt 1 ]; do ifconfig eth0 up ifconfig eth0 | grep 'inet addr' | awk '{ print $2 }' | cut -c 6- > /tmp/eth0.stat if [ -z /tmp/eth0.stat ]; then ifconfig eth0 down sleep $interval else echo "We have an address (`cat /tmp/eth0.stat`), looking good." > /var/log/eth0.stat.log sleep 10 fi done 

创build一个守护进程在启动时运行这个守护进程。

让我知道它是如何工作的

至less在与Fedora相关的发行版中,如果您查看ifup脚本及其亲属,您将看到如果/sbin/ifup-local/sbin/ifdown-local存在,它们将被执行。 这给你一个安全的地方插入机器本地脚本。 传递给这些脚本的一个参数将会是设备的启动或closures。

如果正在启动或停止的设备是您的无线设备,您可以创build这些脚本并让它们启动和停止eth0。

我不知道networking脚本是否configuration为在Debian和相关发行版中以相同的方式工作,但值得一看。