OpenVPN --up script - "externes Programm konnte nicht ausgeführt werden"

8

Nach einigen Tagen bei Google kann ich die richtige Antwort auf meine Frage nicht finden. Nachdem Sie viele Skriptmöglichkeiten gelesen haben, ist OpenVPN aktiv.

Ich habe einen Client, auf dem Debian 7.8 mit OpenVPN 2.2.1 x86_64-linux-gnu ausgeführt wird.

Die Verbindung funktioniert hervorragend und alles ist in Ordnung. Aber - ich muss einige NFS-Laufwerke mounten, dann wird die Verbindung hergestellt ("up" - denke ich).

Aber - dann versuche ich ein Skript zu starten, ich stoße auf diesen Fehler:

 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

Ich habe die Einstellungen in der Konfigurationsdatei hinzugefügt:

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

Die vollständige Einstellungsdatei finden Sie hier .

Das Skript, das ich ausführen möchte (nur zum Testen), lautet:

#/bin/bash

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

clear
echo "Good morning, world."

( Update 2017: - Die Markierung "!" Fehlt in der Zeile # / bin / bash. Kopieren Sie die oberste Zeile nicht und fügen Sie sie nicht ein, da dies das Problem war.)

Ich habe auch mit "#! / Bin / sh" getestet, nur um sicherzugehen. Immerhin habe ich die Berechtigungen und den Besitz getestet:

Berechtigungen

Wie Sie sehen können, habe ich "script-security 2" vor den Befehlen "up" und "down" hinzugefügt. OpenVPN wird als root ausgeführt und von einem init.d-Skript gestartet. Selbst wenn ich versuche, es mit dem vollständigen Befehl auszuführen, wird der gleiche Fehler angezeigt.

Siehe das folgende Beispiel (mit und ohne 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

Wenn ich das verdammt kleine Skript mit SU und Sudo alleine ausführe, läuft alles reibungslos und ohne Probleme.

Der Punkt ist, dass ich diesen Befehl ausführen muss, um ein paar NFS-Laufwerke zu mounten, aber im Moment bin ich gesperrt. Also brauche ich hier etwas Hilfe - ich habe ein dänisches Forum ohne Glück ausprobiert.

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

Das Online-Handbuch ist nicht so hilfreich - und jetzt brauche ich Ihre Hilfe.

exetico
quelle
2
Vielleicht nur ein Tippfehler: Beachten Sie, dass dies #/bin/bashnur ein Kommentar ist, da das Ausrufezeichen fehlt, das ihn in einen Schebang verwandelt:#!/bin/bash
Arjan
Verdammt ... ich habe gerade das "!" Vergessen ... Das erklärt alles.
Exetico
1
Hmmm, ich denke es erklärt nicht alles, es sei denn du hast es auch vergessen #!/bin/sh? Ihr einfaches Testskript sollte damit laufen, denke ich.
Arjan

Antworten:

9

Ich bin auf dasselbe Problem gestoßen, zum Glück habe ich eine Lösung gefunden.

Hier sind Dinge, die ich überprüft habe:

  1. Erlaubnis des Ordners
  2. Erlaubnis von openvpn, auf das Skript zuzugreifen
  3. Das Skript muss den vollständigen Pfad aller verwendeten Befehle auflisten (z. grepB. sollte sein /bin/grep; Sie können den vollständigen Pfad finden, indem Sie whichvor Ihrem Befehl eingeben ).
  4. Verwenden Sie script-security 2 systemstattdessen
Venom Man
quelle
Die Verwendung der systemMethode sollte nicht erforderlich sein. Es ist jedoch auf jeden Fall einen Versuch wert, zu überprüfen, ob das Skript für den Benutzer ausführbar ist.
Daniel B
Von hier aus ist alles richtig. In diesem Fall habe ich nur das "!" Vergessen und nachdem ich denselben Code und eine Quelle mit demselben Fehler kopiert / eingefügt hatte, stieß ich jedes Mal auf dieselben Probleme. Das ist einfach nur dumm. Trotzdem danke für deine Hilfe. Das sind alles nützliche Informationen.
Exetico
+1 für die Erwähnung von Berechtigungen. Stieß auf dasselbe Problem, bei dem Gruppenberechtigungen die Skriptausführung verhinderten.
Justin Ethier
8

Nur um es klar zu machen: Ich habe das " ! " (Ausrufezeichen) vergessen . Das erklärt alles.

#!/bin/bash
exetico
quelle
-1

Überprüfen Sie den Benutzernamen, unter dem der openvp-Dämon ausgeführt wird, und chownIhren Skriptordner oder Ihre Skriptdatei.

Croll
quelle