OpenVPN --up 脚本-“无法执行外部程序”

exe*_*ico 9 linux vpn debian script openvpn

在谷歌上呆了几天后,我无法找到我问题的正确答案。在阅读了很多脚本可能性之后,OpenVPN 就启动了。

我有一个运行 Debian 7.8 的客户端,带有 OpenVPN 2.2.1 x86_64-linux-gnu。

连接运行良好,一切正常。但是 - 我需要挂载一些 NFS 驱动器然后启动连接(“up” - 我猜)。

但是 - 然后我试图启动一个脚本,我遇到了这个错误:

 Tue Jun 23 10:44:55 2015 /usr/share/openvpn/script-to-start.sh tun0 1500 1542 192.168.2.6 192.168.2.5 init
 Tue Jun 23 10:44:55 2015 WARNING: Failed running command (--up/--down): could not execute external program
 Tue Jun 23 10:44:55 2015 Exiting
Run Code Online (Sandbox Code Playgroud)

我在配置文件中添加了设置:

script-security 2
up /usr/share/openvpn/script-to-start.sh
down /usr/share/openvpn/script-to-stop.sh
Run Code Online (Sandbox Code Playgroud)

此处查看完整的设置文件

我正在尝试运行的脚本(现在仅用于测试)是:

#/bin/bash

grep vpn /var/log/syslog > /home/USERNAME/test.txt

clear
echo "Good morning, world."
Run Code Online (Sandbox Code Playgroud)

2017更新: - #/bin/bash 行中缺少“!”标记。不要复制/粘贴在上面的行,因为这是问题所在)

我也用 "#!/bin/sh" 测试过,只是为了确定。毕竟,我测试了权限和所有权:

权限

如您所见,我在“up”和“down”命令之前添加了“script-security 2”。OpenVPN 以 root 身份运行,并由 init.d 脚本启动,但即使我尝试使用完整命令运行它,也会遇到相同的错误。

请参见下面的示例(使用和不使用 sudo):

sudo openvpn --remote SERVERDOMAIN --dev tun1 --ifconfig 192.168.2.2 192.168.2.1 --tls-client --ca /etc/openvpn/easy-rsa/keys/ca.crt --cert /etc/openvpn/easy-rsa/keys/TITLE.crt --key /etc/openvpn/easy-rsa/keys/TITLE.key --reneg-sec 60 --verb 5 --script-security 2 --up /usr/share/openvpn/script-to-start.sh
Run Code Online (Sandbox Code Playgroud)

如果我自己运行该死的小脚本,同时使用 SU 和 Sudo,一切都会顺利进行,没有任何问题。

关键是我需要运行这个命令来挂载一些 NFS 驱动器,但现在我被锁定了。所以我在这里需要一些帮助 - 我确实在丹麦论坛上尝试过,但没有运气。

sudo mount 192.168.2.1:/media/usb1/sync /home/USERNAME/sync
Run Code Online (Sandbox Code Playgroud)

在线手册不是很有帮助 - 现在我需要你的帮助。

小智 10

我遇到了同样的问题,幸运的是我找到了解决方案。

以下是我检查的内容:

  1. 文件夹权限
  2. openvpn 访问脚本的权限
  3. 脚本必须列出使用的任何命令的完整路径(例如grep应该是/bin/grep;您可以通过which在命令前面键入来找到完整路径)
  4. 使用script-security 2 system替代


exe*_*ico 10

澄清一下:我忘记了“ ”(感叹号)。这就解释了一切。

#!/bin/bash
Run Code Online (Sandbox Code Playgroud)