问题描述
||
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默认路径中的二进制文件。