Я пытаюсь заставить диспетчера Администратора сети запускать скрипт, когда сетевой интерфейс подходит или понижается. Я хочу выполнить команду espeak, когда соединение повышается или понижается. Я могу заставить это писать в файл/tmp/log, но я не слышу звука от команды espeak даже при том, что я могу ввести его непосредственно на терминале, и это работает.
Путем я тестирую его, путем разъединения моей сетевой платы usb (это - единственная сетевая плата, которую я имею в машине),
Я имею, помещают исполняемый файл в /etc/NetworkManager/dispatcher.d
(это назвало 02-ifupdowntest),
-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-ifupdowntest ниже:
#!/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 64bit Linux
Похоже, что/etc/network/interfaces переопределяет NetworkManager. Когда я удалил запись из своего интерфейса из того файла, сценарии в dispatcher.d назвали правильно снова.