使用 dispatcher.d 在网络正常或故障时执行命令

使用 dispatcher.d 在网络正常或故障时执行命令

我正在尝试让网络管理器调度程序在网络接口启动或关闭时运行脚本。我想在连接启动或关闭时执行 espeak 命令。 我可以让它写入文件 /tmp/log,但我听不到 espeak 命令的任何声音即使我可以直接在终端上输入它并且它可以工作。

我测试的方式是断开我的 USB 网卡(这是我的机器上唯一的网卡)

我把可执行文件放在/etc/NetworkManager/dispatcher.d (它叫做02-ifupdown 测试

-rwxr-xr-x 1 root root 2293 Mar 26  2018 01-ifupdown
-rwxr-xr-x 1 root root  534 Jan 23 16:42 02-ifupdowntest
-rwxr-xr-x 1 root root 5383 Mar 27  2018 99tlp-rdw-nm

查看内容02-ifupdown 测试以下:

#!/bin/bash -e
if [ "$2" = "up" ]; then

    echo "`date`" > /tmp/log
    echo "$1" >> /tmp/log
    echo "$2" >> /tmp/log
    echo "`/usr/bin/espeak "network up"`"

fi

if [ "$2" = "down" ]; then
    echo "$2" >> /tmp/log
    echo "`/usr/bin/espeak "network down"`"


fi

exit 0

我正在使用 Ubuntu 18.04 64 位 Linux

答案1

看起来 /etc/network/interfaces 覆盖了 NetworkManager。当我从该文件中删除我的接口的条目时,dispatcher.d 中的脚本再次被正确调用。

相关内容