Archiv verlassen und diese Seite im Standarddesign anzeigen : prozess via php script auf dem linux server starten
hallo
es gibt unter php eine funktion namens shell_exec.
mit dieser sollte man shell befehle über php ausführen lassen.
auf dem SuSE 8.2 läuft bei mir ein cisco vpnclient-linux-3.7.3.A-k9
und funktioniert.
wenn aber länger nichts passiert macht er die Verbindung zu.
möchte aber den User die Möglichkeit geben, den vpn client
je nach Bedarf via browser starten.
vpn client startet normalerweise mit:
/etc/init.d/vpnclient_init restart
wie würden syntax für so ein script aussehen ?
mit php kenne mich leider nicht so aus.
MFG
ccc
sixfriends
11-01-2004, 02:07
shell_exec kenn ich net, aber so sollte es auch gehen:
<?php
exec("/etc/init.d/vpnclient_init restart");
?>
shell_exec hat vermutlich die selbe Syntax.
Na ja ich würde dann aber auf alle Fälle nen Passwortgeschützenbereich drum rumbauen bei Shellausführungen.
hallo
vielen herzlichen dank !
mit
<?php
exec("/etc/init.d/vpnclient_init restart");
?>
funktioniert wunderbar.
gibt's aber irgendwelche möglichkeit zuerst mit PHP zu überprüfen,
ob der prozess aktiv ist und erst dann exec laufen lassen ?
# ps ax | grep vpnclient
1635 ? S 0:00 /usr/local/bin/vpnclient
bzw.
ein ping ausführen und erst wenn keine antwort gibt,
dann exec laufen.
möchte eben verhindern, dass die user den vpnclient nicht gegenseitig
unnötig abschiessen.
password schutz klar und ist bereits eingerichtet.
es ist aber nicht so schlimm, weil server nur intern erreichbar ist.
gruss
ccc
sixfriends
11-01-2004, 16:03
<?php
$result = exec("ps ax | grep '/usr/local/bin/vpnclient' | grep -v 'grep'");
if (!empty($result)) {
exec("/etc/init.d/vpnclient_init restart");
}
?>
EDIT: exec gibt die Ausgabe des ausgeführten Befehls an das Script zurück (Oder war es nur die erste Zeile??)
hallo sixfriends
erstes script funktioniert einwandfrei,
aber zweites nicht.
wenn ich vpnclient manuell stoppe und script laufe,
geschiet nichts.
vpnclient wird nicht gestartet.
gruss
ccc
sixfriends
11-01-2004, 20:51
Peinlich, peinlich: Muss natürlich if (empty(..... heissen, soll den vpnclient ja schliesslich starten, wenn kein solcher Prozess gefunden wurde.
:eek:
Mein Fehler
hallo
bin inzwischen selber zu einer anderer lösung gekommen:
<?php
$result = exec("ps ax | grep '/usr/local/bin/vpnclient' | grep -v 'grep'");
if ("$result?" != "0") {
exec("/etc/init.d/vpnclient_init restart");
}
?>
funktioniert auch.
anyway herzlichen dank für die hilfe.
gruss und schönen abend
ccc
hi
habe aber anderes problem:
wenn ich von der linux konsole diesen php script als root user starte,
funktioniert tadellos.
wenn ich aber im webverzeichnis platziere und via browser ausführen will,
dann geht es nicht.
vermutlich hat apache user keine rechte prozese zu starten.
weiss jemand, wie ich dies ändern kann und aus sichercheitsgründen,
wenn es geht nur diesen prozes erlauben ?
gruss
ccc
sixfriends
11-01-2004, 23:38
Bin jetzt nicht so der Linux Gott, aber gibt es dafür nicht den Befehl su??
Benutzung: rtfm ;)
btw: Vermutlich falsches Forum für so was --> linuxforen.de
mehlvogel
12-01-2004, 00:51
sudo heißt das was du möchtest ccc
mit
exec("sudo -u root /etc/init.d/vpnclient_init restart");
funktioniert von command line, aber NICHT via browser !
gruss
ccc
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.