как разместить скрипты в каталоге dispatcher.d сетевого менеджера - PullRequest
0 голосов
/ 31 мая 2011

Ubuntu 10.10, 64-битный аталон, гном

Мой основной сценарий - я подключаюсь к VPN-сервису (через протокол pptp newtworkmanager) и передаю приватные данные (следовательно, VPN). Служба прерывается, и это нормально, вероятно, из-за моего ISP / OS / VPN. Что не хорошо, так это то, что мои приложения будут продолжать передавать данные по стандартному маршруту eth0, и это не круто. После некоторого осмотра я подозреваю, что лучший способ справиться с этим - это разместить сценарии в /etc/NetworkManager/dispatcher.d. Короче говоря, служба networkmanager будет выполнять сценарии в этом каталоге (и передавать аргументы сценариям), когда что-либо в сети изменится.

Моя проблема в том, что я не могу выполнить ни один из своих сценариев. Все они имеют на странице man 0755 разрешений и принадлежат пользователю root, но когда я меняю состояние сети, отсоединив кабель Ethernet, мои сценарии не выполняются. Я могу выполнить их из командной строки, но не автоматически через диспетчер ....

пример сценария:

#!/bin/sh -e


exec /usr/bin/wmctrl -c qBittorrent

exit 0

Этот скрипт намеренно прост для тестирования. Я могу опубликовать все, что было бы полезно.

1 Ответ

0 голосов
/ 31 мая 2011

Я использую синтаксис killall -9 any_application_name_here, и это работает просто отлично. Я полагаю, что у сценария не было доступа к двоичному файлу wmctrl. Я думаю, что интерпретатор bash в этом случае будет выполнять только двоичные файлы bash.

Итак, в двух словах: если вы хотите контролировать свой VPN-трафик на основе сетевых событий, один из способов - отправить сценарии на /etc/NetworkManager/dispatcher.d и использовать двоичные файлы, которые находятся в пути bash по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...