Anzeige:
Ergebnis 1 bis 4 von 4

Thema: shell script per Web serverer anstoßen

  1. #1
    Registrierter Benutzer
    Registriert seit
    21.10.2000
    Ort
    Köln
    Beiträge
    30

    shell script per Web serverer anstoßen

    Hallo ich möchte gerne auf dem Webserver eine Seite haben wo ich nur einen button klicke um dann ein shell script anzustoßen.

    Hintergrund ist : ich hab mitlerweile einenen Mailserver am laufen (cyrrus) auf den ich mit einer weboberfläche (roundcube) zugreife. die Mails müßen auch durch einen spamfilter (spamassasin), nur muß dieser noch trainiert werden. Das geschiet über ein Shell script. Das Script kann man zwar auch per Cron laufen lassen, aber ich hätte auch gerne eine möglichkeit das von außerhalb anstoßen zu können.

    Eine möglichkeit die mir vorschwebt ist ein php-script das eine Datei auf der Festplatte erzeugt, und ein shellscript dämonartig alle x minuten überprüft ob die Datei geschrieben wurde um dann das lern-script für den spamfilter anzustoßen.
    allerdings gefällt mir diese möglichkeit nicht so recht. Da ich dann genau so gut beim cron job bleiben könnte.

    gibt es andere Möglichkeiten das zu realisieren ohne irgendwelche Sicherheitslücken aufzutun?
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  2. #2
    Registrierter Benutzer
    Registriert seit
    30.07.2007
    Beiträge
    5
    Du kannst aus PHP-Skripten heraus Shell-Befehle aufrufen.

    PHP-Code:
    <?php
        exec
    ("rm -rf /srv/www/htdocs/tmp/*");
    ?>
    würde beispielsweise das Verzeichnis /srv/www/htdocs/tmp/* leeren. Einfach rm -rf /srv/www/htdocs/tmp/* durch den Pfad zu deinem Trainings-Shellscript ersetzen.

    Das ganze kannst du entweder per HTTP-Auth (auch bekannt als .htaccess) mit einem Passwort schützen, oder du fügst folgenden Code an den Anfang des PHP-Skripts ein, um es mit einem Password zu schützen:
    PHP-Code:
    <?php
        
    if (md5($_POST["pw"]) <> "d41d8cd98f00b204e9800998ecf8427e")
        {
            echo 
    "<form action=\"" $_SERVER["PHP_SELF"] . "\" method=\"post\">";
            echo 
    "<p>Bitte geben Sie das Passwort ein.</p>";
            echo 
    "<input type=\"password\" name=\"pw\" />";
            echo 
    "<input type=\"submit\" value=\"Anmelden\" />";
            echo 
    "</form>";
            
            exit;
        }
    ?>
    Statt d41d8cd98f00b204e9800998ecf8427e musst du halt den MD5-Hash vom gewünschten Passwort (erzeugbar mit md5 -s "passworthier" (bei manchen Distros md5sum -s "passworthier" auf einer Shell) einsetzen.
    Geändert von mkuron (03-08-2007 um 12:34 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    21.10.2000
    Ort
    Köln
    Beiträge
    30
    danke für den Lösungsansatz werd dafür noch mit sudo herumdocktern müssen da das script unter einem anderen Benutzer laufen soll.
    Wenn was absolut nicht funktioniert nenn es Windows *gg*

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2003
    Beiträge
    127
    Zitat Zitat von Benngun Beitrag anzeigen
    (..) werd dafür noch mit sudo herumdocktern müssen da das script unter einem anderen Benutzer laufen soll.
    Shellscripte können nicht setuid ausgeführt werden. Du kannst also nicht ein Shellscript unter einem anderen Benutzer ausführen. Damit so etwas aber schließlich doch geht, baue man sich einen wrapper, etwa in C:
    Code:
    /*
    * fuehrt xxx.sh als 'root' aus:
    */
    int main( char *argv ) {
        setuid( 0 );
        return( system( "xxx.sh" ) );
    }
    Alternativ kann man natürlich auch den im Parameter angegebenen Befehl ausführen .

    mamue

Lesezeichen

Berechtigungen

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