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

Networking 如何将脚本发布到networkmanager的dispatcher.d目录,networking,ubuntu,vpn,dispatcher,Networking,Ubuntu,Vpn,Dispatcher,Ubuntu 10.10 64位athalon,gnome 我的基本场景是,我通过NewWorkManager pptp协议连接到VPN服务,并传输私有数据,从而实现VPN。服务间歇性地停止,这没关系,可能是因为我的ISP/OS/VPN。不好的是,我的应用程序将继续通过eth0默认路由传输数据,这并不酷。环顾四周后,我怀疑最好的解决方法是将脚本发布到/etc/NetworkManager/dispatcher.d中。简而言之,networkmanager服务将在此目录中执行脚本,并在网络发生任何

Ubuntu 10.10 64位athalon,gnome

我的基本场景是,我通过NewWorkManager pptp协议连接到VPN服务,并传输私有数据,从而实现VPN。服务间歇性地停止,这没关系,可能是因为我的ISP/OS/VPN。不好的是,我的应用程序将继续通过eth0默认路由传输数据,这并不酷。环顾四周后,我怀疑最好的解决方法是将脚本发布到/etc/NetworkManager/dispatcher.d中。简而言之,networkmanager服务将在此目录中执行脚本,并在网络发生任何变化时向脚本传递参数

我的问题是我无法执行任何脚本。根据manpage,它们都有0755权限,并且归root所有,但是当我拔掉以太网电缆更改网络状态时,我的脚本不会执行。我可以从命令行执行它们,但不能通过dispatcher自动执行

示例脚本:

#!/bin/sh -e


exec /usr/bin/wmctrl -c qBittorrent

exit 0
出于测试目的,此脚本有意简化。。 我可以发布任何有帮助的东西

我在这里使用的语法是killall-9 any_application_name_,效果很好。我想脚本没有访问二进制wmctrl的权限。我认为本例中的bash解释器将只执行bash二进制文件


因此,简而言之,如果您想根据网络事件控制VPN流量,一种方法是将脚本发布到/etc/NetworkManager/dispatcher.d,并使用bash默认路径中的二进制文件

您可能在或上有更好的运气-通常是,因此这是一种独特的情况,无论VPN是否启动,数据包都可以路由到那里。你能在远程端添加防火墙来删除不是通过VPN建立的连接吗。。