如何将脚本发布到networkmanager的dispatcher.d目录中

问题描述

|| Ubuntu 10.10 64位Athalon,gnome 我的基本情况是,我正在连接到VPN服务(通过newtworkmanager pptp协议),并且正在传输私有数据(因此是VPN)。服务间歇性地关闭,没关系,可能是由于我的ISP / OS / VPN。不好的是,我的应用程序随后将继续通过eth0认路由传输数据,这并不酷。环顾四周后,我怀疑最好的解决方法是将脚本发布到/etc/NetworkManager/dispatcher.d中。简而言之,当有关网络的任何更改发生时,networkmanager服务将在此目录中执行脚本(并将参数传递给脚本)。 我的问题是我无法执行任何脚本。根据联机帮助页,它们都具有0755权限,并由root拥有,但是当我通过拔下以太网电缆来更改网络状态时,我的脚本无法执行。我可以从命令行执行它们,但不能通过调度程序自动执行...。 一个示例脚本:
#!/bin/sh -e


exec /usr/bin/wmctrl -c qBittorrent

exit 0
此脚本出于测试目的故意很简单。 我可以发布任何其他有用的信息。     

解决方法

        我正在使用语法
killall -9 any_application_name_here
,并且工作正常。我以为脚本无法访问二进制wmctrl。我认为在这种情况下,bash解释器将仅执行bash二进制文件。 因此,简而言之,如果要基于网络事件控制VPN流量,一种方法是将脚本发布到“ 2”并使用bash默认路径中的二进制文件。