Anzeige:
Ergebnis 1 bis 12 von 12

Thema: prozess via php script auf dem linux server starten

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.04.2003
    Beiträge
    54

    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

  2. #2
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    shell_exec kenn ich net, aber so sollte es auch gehen:
    PHP-Code:
    <?php
        exec
    ("/etc/init.d/vpnclient_init restart");
    ?>
    shell_exec hat vermutlich die selbe Syntax.
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

  3. #3
    Registrierter Benutzer
    Registriert seit
    05.04.2002
    Beiträge
    73
    Na ja ich würde dann aber auf alle Fälle nen Passwortgeschützenbereich drum rumbauen bei Shellausführungen.
    Suse 7.2 und Ärger mit einem störrischen 400 Mhz der nur noch dazu da ist mich zu beschäftigen Gott sei dank habe ich auf meinem anderen 1600 LInux das funktioniert **GGG***
    Gurt fest aber selber locker bleiben.

    Es gibt auf alles ne Antwort, ihr müsst nur fragen ansonsten alles auf www.webmasteronly.de

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.04.2003
    Beiträge
    54
    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

  5. #5
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    PHP-Code:
    <?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??)
    Geändert von sixfriends (11-01-2004 um 16:06 Uhr)
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

  6. #6
    Registrierter Benutzer
    Registriert seit
    25.04.2003
    Beiträge
    54
    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

  7. #7
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    Peinlich, peinlich: Muss natürlich if (empty(..... heissen, soll den vpnclient ja schliesslich starten, wenn kein solcher Prozess gefunden wurde.

    Mein Fehler
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.04.2003
    Beiträge
    54
    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

  9. #9
    Registrierter Benutzer
    Registriert seit
    25.04.2003
    Beiträge
    54
    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

  10. #10
    Registrierter Benutzer Avatar von sixfriends
    Registriert seit
    26.03.2003
    Ort
    /home/sixfriends
    Beiträge
    285
    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
    .
    Wenn die Sonne der Kultur niedrig steht, werfen selbst Zwerge einen Schatten.

  11. #11
    Registrierter Benutzer
    Registriert seit
    02.12.2002
    Ort
    Darmstadt
    Beiträge
    615
    sudo heißt das was du möchtest ccc

  12. #12
    Registrierter Benutzer
    Registriert seit
    25.04.2003
    Beiträge
    54
    mit

    exec("sudo -u root /etc/init.d/vpnclient_init restart");

    funktioniert von command line, aber NICHT via browser !

    gruss
    ccc
    Geändert von ccc (03-03-2004 um 09:58 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •