令 ifplugd 支持网桥和弹出消息
[text]
# 更新日志:
2012-03-04
无实质性变更。仅修改对于网桥的弹出消息提示方式。比如原本只提示“eth0”并不能说明 eth0 已加入网桥,现改为提示“br0:eth0”以求清晰。
2012-03-03 首发
实现支持网桥和在活动桌面弹出消息功能。
[/text]
ifplugd 对于喜欢用 /etc/network/interfaces 配置网络的朋友来说确实是个好东西。但它并不支持网桥,也不能在通断之时如同 network-manager 一般弹出消息。
不支持网桥原因在于,它只能检测并直接操作(ifup / ifdown)eth0 等物理接口的通断,而网桥的起停偏偏并不能直接操作物理接口。本脚本便是对原有的 /etc/ifplugd/action.d/ifupdown 略加修改了一下,加了一种映射机制,令其操作物理接口所属的网桥。有兴趣的朋友可对照原先的 ifplugd 脚本。映射关系记录在 /var/run/ifplugd.map 之中,一行一射,左为物理接口,右为所属网桥,中间等号相连不含空白符,比如 eth0=br0。
使用时,只要在 /etc/network/interfaces 中加入操作映射表之行即可,请看以下示例。若使用网桥 br0,则将 eth0 的映射目标修该为 br0。若不用网桥而直接使用 eth0,则删除其映射项,改成 eth0=eth0 当然也可以,但显然有些多此一举。
[text]
# interfaces 示例
iface eth0 inet dhcp
pre-up ifdown br0
post-up sed -i '/^eth0=/d' /var/run/ifplugd.map || true
iface br0 inet dhcp
pre-up ifdown eth0
pre-up ifup tap1
pre-up ifconfig tap1 0.0.0.0
bridge_ports eth0 tap1
post-up sed -i '/^eth0=/d' /var/run/ifplugd.map || true
post-up echo 'eth0=br0' >>/var/run/ifplugd.map
[/text]
不支持弹出消息原因在于, ifplugd 并不像 network-manager 一样有桌面端(托盘图标那个),而是只有守护进程。守护进程素来不知该如何发送消息到当前活动桌面,所以一直以来它只能在后台默默工作,直到我写了个 notify-send2(我不知道别人是否也写了个类似的,我并未在网上撞见)。关于 notify-send2,请看《让守护进程给活动桌面发送弹出消息》。若链接已死请看我签名,若未直接显示相关信息,请点击【更多在此】!
另外,如果用 dhcp 获取 IP,插入网线时消息弹出会比较慢,因为 ifup 总要等到获取 IP 成功或超时(通常是 32 秒)。作为守护进程,弹出消息语言由系统默认语言(Debian / Ubuntu 常定义在 /etc/default/locale)决定,而非某桌面用户设置。
依赖的系统所属包(Debian / Ubuntu): ifplugd dash sed
依赖的非系统原有工具: notify-send2
SHA1: 15fd8624eeb1f970325fdc9c154d3fb12f4138b7
令 ifplugd 支持网桥和弹出消息(2012-03-04 更新)
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
-
- 帖子: 14
- 注册时间: 2009-09-28 15:59
Re: 令 ifplugd 支持网桥和弹出消息(2012-03-04 更新)

- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: 令 ifplugd 支持网桥和弹出消息(2012-03-04 更新)
用 ifplugd 的才明白。
- ywmy210
- 帖子: 252
- 注册时间: 2010-10-14 12:54