仅为特定接口运行特定的 /etc/network/if-up.d-script

仅为特定接口运行特定的 /etc/network/if-up.d-script

我想在启动特定接口(例如 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了解您可以执行的操作的一些示例。

相关内容