web-dev-qa-db-ja.com

OpenVPN --upスクリプト-「外部プログラムを実行できませんでした」

Googleで数日経ってから、質問に対する正しい答えが見つかりません。多くのスクリプトの可能性を読んだ後、OpenVPNが稼働します。

OpenVPN 2.2.1 x86_64-linux-gnuを搭載したDebian 7.8を実行しているクライアントがあります。

接続は正常に機能しており、すべて正常です。しかし-私はいくつかのNFSドライブをマウントする必要があり、それから接続が開始されます(「アップ」-おそらく)。

しかし、-私はスクリプトを開始しようとしています、私はこのエラーに遭遇しています:

 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

設定ファイルに設定を追加しました:

script-security 2
up /usr/share/openvpn/script-to-start.sh
down /usr/share/openvpn/script-to-stop.sh

完全な設定ファイルはこちら を参照してください。

私が実行しようとしているスクリプト(今のところテスト用)は次のとおりです。

#/bin/bash

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

clear
echo "Good morning, world."

Update 2017:-#/ bin/bash-lineに「!」マークがありません。上の行をコピー/貼り付けしないでください。それが問題でした)

念のため、「#!/ bin/sh」でもテストしました。結局、私は権限と所有権をテストしました:

Permissions

ご覧のとおり、「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

SUとSudoの両方を使用して、私がいまいましい小さなスクリプトを実行している場合、すべてが問題なくスムーズに行われます。

ポイントは、いくつかのNFSドライブをマウントするためにこのコマンドを実行する必要があるということですが、今はロックダウンされています。だから私はここでいくつかの助けが必要です-私は運が悪かったデンマークのフォーラムに挑戦しました。

Sudo mount 192.168.2.1:/media/usb1/sync /home/USERNAME/sync

オンラインmanuelsはそれほど役に立ちません-そして今、私はあなたの助けを必要としています。

8
exetico

私は同じ問題に遭遇しました、幸いにも私は解決策を見つけました。

これが私がチェックしたものです:

  1. フォルダの許可
  2. スクリプトにアクセスするためのopenvpnの許可
  3. スクリプトは、使用するコマンドの完全なパスをリストする必要があります(例:grep/bin/grep;コマンドの前にwhichと入力すると、完全なパスを見つけることができます)
  4. 使用する script-security 2 system代わりに
9
Venom Man

明確にするために、私は ""(感嘆符)を忘れました。それがすべてを説明しています。

#!/bin/bash
8
exetico