我想在启动特定接口(例如 eth0)时运行网络脚本,方法是调用
ifup eth0
该脚本应仅在启动 eth0 时运行。我的方法是编写脚本(名为script.sh
),将其放在可执行文件位置,然后写入/etc/network/interfaces
:
auto eth0
iface eth0 inet manual
up /path/to/script.sh
有没有更优雅的方法来实现这一点?我可以/etc/network/if-up.d
以某种方式使用脚本环境吗?据我所知全部无论打开哪个界面,此文件夹中的脚本都会运行。
答案1
当调用 ifup.d 中的脚本时,会向其传递大量与特定接口配置相关的环境变量。例如,如果您的接口配置如下所示。
iface eth0 inet manual
dofoo on
$IF_DOFOO
然后您的脚本将会收到一个值为 的变量on
。
知道你可以在脚本的开头放一些内容,例如
#!/bin/bash
if [ -z "$IF_DOFOO" ] ; then
# this script only applies to interface flagged as dofoo
exit 0
fi
... Doing the foo.
有了这个,该脚本就可以轻松地放置在 if-up.d 下。
当然,您也可以简单地查看该$IFACE
值,然后对脚本进行硬编码,使其只针对特定接口运行,或者将其与其他外部配置源匹配。查看其他脚本,if-up.d
了解您可以执行的操作的一些示例。