我正在尝试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一直出现并消失。 我的问题是:
我正在使用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和相关发行版中以相同的方式工作,但值得一看。