Hallo Andreas|Grimnin,
Zitat von Grimnin Fridyson fridy_lugdd@yahoo.de:
mach es wie einige entwickler bei uns im haus schreibe den befehl in jeweils eine datei die dann von einem regelmässigen script abgearbeitet wird (warum sie keine pipe nehmen weiß ich nicht auch nicht ob es geht)
Die Idee gefällt mir irgendwie. Da kann ich evtl. auch mit time arbeiten... mal experimentieren.
--php über einen webserver-- (php kann man auch auf der konsole ausführen wie es sich dort genau verhält weiß ich jetzt nicht weil es da bei weiteren bessere sprachen gibt)
Was PHP betrifft bin ich je nicht unbedarft. Kleine Aufgaben erledige ich schnell mal mit PHP auf der Komandozeile wie andere mit einem Perl-Einzeiler (wobei ich gestehen muss das Perl auf der Kommandozeile doch etwas überlegen ist). Nur das Thema mit "Shell-Scripte mit PHP und Weboberfläsche aufrufen" ist mal eine Herausforderung.
du müsstes wenn das php script so bauen das es dein eigentliches script als art fork aufruft dann sollte php nur solange "warten" bis der fork fertig ist
da kannste vieleicht noch was mit ajax machen, das dann informationen nachlädt etc (oder java da kann ich dir aber nur beim trinken helfen)
Die Einladung zum Trinken nehme ich gerne an.
Andreas
Falk
Ausserdem: Das Aufrufen eines shellskriptes durch einen Webserver ist möglicherweise ein grosses Sicherheitsloch. Am Besten ist eine genaue Prüfung der übergebenen Parameter. Mindestens muss die Seite durch https/Basic Authentication geschützt werden.
Dieses Problem ist mir durchaus bewusst. Aber manchmal gibt es Anforderungen ... du verstehst ;-).
Falk
Am 26. Februar 2009 09:02 schrieb :
Hallo LUG,
bitte nicht steinigen, aber ich habe da mal einige Fragen zu Shell-Skripten und PHP. Wem die Abkürzung PHP stört, kann vermutlich auch Phyton oder Ruby einsetzen ;-). Nun aber los:
Die Idee ist folgende: Einer Menge User soll ein Web-Interface zur Verfügung gestellt werden. Dieses Interface beinhaltet eine Liste von Shell-Scripten, die aufgerufen werden können (klick auf grünem Pfeil). Es sollen Start- und Endzeit, ob das Programm läuft, ob es auf stdout bzw stderr was geschrieben hat angezeigt werden sowie die Möglichkeit des Abbruchs (klick auf rotes Kreuz) geben. Die Shell-Skripte sollen im Hintergrund gestartet werden.
Was funktioniert: Starten des Programmes, abbrechen des Programmes, Startzeit des Programmes.
Was nicht funktioniert: Das Programm im Hintergrund starten. Ich starte das Skript per
$command = 'cd ' . $programmpfad . ' && ' . 'nohup ./' . $programmname . ' > ' . $logFile . ' 2> ' . $errorFile . ' & echo $!';
Auf der Shell sieht es ungefähr so aus:
cd /mein/pfad/zum/programm && nohup ./programmname > run.log 2> error.lug & echo $!
Damit hätte ich auch die PID, über die ich kill ausführen kann. Nun wartet aber trotzdem PHP bis das Programm im Hintergrund fertig ist mit werkeln. Irgendwo ist das ja logisch, aber nicht gewünscht. Hat jemand eine Idee? Also PHP soll das Skript starten und mir mitteilen: Läuft. Das Skript soll werkeln. Wenn ich die PHP-Seite aktualisiere soll mir irgendwann angezeigt werden: Läuft nicht mehr, erfolgreich beendet oder Fehler (möglich über die Logfiles).
Was auch nicht funktioniert: Zeitmessung
Ich will wissen, wie lange das Programm im HG werkelte. Nutze ich time, bekomme ich die PID von time (war auch interessant herauszufinden, dass es einmal time als eigenständiges Programm und einmal time als Bash-Befehl gibt). Hat jemand eine Idee wie ich ohne time die Laufzeit bekomme?
Natürlich bin ich auch für ganz andere Ideen offen.
Vielen Dank für eure Mithilfe,
Falk
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
-- "Frauen sind wie Juwelen. Man muss sie mit Fassung tragen" Heinz Erhardt
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd
Lug-dd maillist - Lug-dd@mailman.schlittermann.de https://ssl.schlittermann.de/mailman/listinfo/lug-dd