LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 568|回复: 6

关于 /etc/network/interface 的疑问

[复制链接]
发表于 2012-1-11 23:35:22 | 显示全部楼层 |阅读模式
vde 文档中举例如下
  1.     auto vde0
  2.     iface vde0 inet manual
  3.         vde2-switch -
  4.         vde2-slirp -dhcp
复制代码

那个 vde2-switch、 vde2-slirp 既不是 $PATH 中的任何命令,甚至连这个文件都没有,所以它不是外部命令。再说外部命令不都是用 up、 down 之类的起头的吗? ifupdown 是如何识得这两行的?

如果是 ifupdown 自己一开始就有的“内部命令”,那为何 ifupdown 的所有文档都却之不提?
如果 ifupdown 的“插件”“扩展”,那应该是安装 vde 时带上的,我查过 vde2 的安装包和其安装脚本,都没见任何迹象表明 vde 给 ifupdown 装过“插件”。
发表于 2012-1-12 09:41:28 | 显示全部楼层
vde2-switch -
        vde2-slirp -dhcp

我的interface文件里没有这两句
回复 支持 反对

使用道具 举报

发表于 2012-1-12 16:57:23 | 显示全部楼层
vde0就跟eth0,wlan0一样, 见
http://www.netfrag.org/cgi-bin/d ... e2/README.Debian.gz
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-12 18:35:16 | 显示全部楼层
@cigerma,我知道这东西的用法,我只是好奇, vde2-switch 这样的“命令”, ifupdown 是怎么认识的。我也不是说编译原理词法分析云云,而是不明白识别该“命令”是谁的责任。是 ifupdown 本身还是 vde 为 ifupdown 写的“插件”。
回复 支持 反对

使用道具 举报

发表于 2012-1-12 21:21:34 | 显示全部楼层
/etc/network/if-pre-up.d/vde2
Debian自己加的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-13 21:07:53 | 显示全部楼层
Post by cigerma;2158592
/etc/network/if-pre-up.d/vde2
Debian自己加的


没那么简单,那个脚本我看过,也正是看到那脚本才发出的疑问。
脚本本身并不复杂,只是有些疑问,比如
  1. if [ -z "$IF_VDE2_SWITCH" -a -z "$IF_VDE2_PLUG" -a -z "$IF_VDE2_SLIRP" ]; then
复制代码

那三个变量正是取决于 interfaces 中相应的 vde2_switch 等命令,疑惑就在于, ifupdown 是如何知道该怎样正确处理 vde2_switch 而变成 IF_VDE2_SWITCH 而传递给那脚本的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-1-13 21:28:47 | 显示全部楼层
哈哈……大胆的尝试了一番,原来 ifupdown 是这样工作的!有意思!
vde2-switch 等等,任何只要不是 address、 up、 down 等之类 ifupdown 原先就有定义的命令, ifupdown 都会将其转换成相应环境变量然后专递给众脚本。一,变量名为 "IF_" 加全部变成大写的命令名;二,减号变成下划线;三,后续参数全变成其变量值。或许还有更复杂的规则,但我目前只知道这三点。
比如
vde2-switch - 会变成 IF_VDE2_SWITCH='-'
vde2-slirp -n 192.168.10.0 -dhcp 变成 IF_VDE2_SLIRP='-n 192.168.10.0 -dhcp'
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表