使用 netcfg 出现任何无线连接时启动程序

使用 netcfg 出现任何无线连接时启动程序

我编写了一个程序,可以透明地登录强制门户。因此,我想在任何无线连接出现时运行它网络配置。可以通过使用在配置文件中执行此操作POST_UP,但这需要将其添加到当前存在的每个连接以及将来可能创建的任何连接,这在我的情况下不可行。我也不希望作为守护进程轮询网络连接。我没有看到任何有关执行此操作的信息man netcfg-profiles

我应该如何处理这个问题? netcfg 是否有任何内置配置允许POST_UP应用到多个连接?

它也适用于所有连接(包括有线)是可以接受的,但如果可能的话我想避免它。

答案1

特定于接口的 {PRE,POST}_{UP,DOWN} 命令可以在 /etc/network.d/interfaces/$DEVICE 中定义,其中 $DEVICE 是您的网络设备名称。因此,尽管每个接口都需要一个钩子(这实际上是您所表明的所需),但每个连接不需要一个钩子。

例如,我的interfaces文件夹有以下文件:

/etc/network.d/interfaces/_functions:

notify() {
dev="$1"
state="$2"
/usr/local/sbin/xuserrun /usr/local/sbin/network_notification "$dev" "$state"
return 0
}

/etc/network.d/interfaces/{wlan0,eth0} (两者具有相同的内容):

source /etc/network.d/interfaces/_functions
POST_UP="notify ${INTERFACE} up"
PRE_DOWN="notify ${INTERFACE} down"

这会运行一个脚本来发送弹出通知,告诉我连接何时建立/丢失。请注意,这些挂钩以 root 用户身份运行。该xuserrun命令可用于github并确定当前的 X 用户名并在运行后续命令之前切换到该用户。

相关内容