Anzeige:
Ergebnis 1 bis 5 von 5

Thema: [cgi] Shellcommando ausgabe umleiten

  1. #1
    Registrierter Benutzer Avatar von alex23
    Registriert seit
    01.12.2005
    Ort
    Köln
    Beiträge
    11

    [cgi] Shellcommando ausgabe umleiten

    Hallo ich hab hier ein kleines problem dessen lösung ich nicht allein finde.

    also folgendes:

    ich will mit einen cgi-script ein shellcommando ausführen und dessen ausgabe in einer variable speichern oder besser noch in eine datei umlenken.

    Code:
    $A = `rsh`;
    `echo $A >> c:/tmp/purge.out`;
    das kommando wird ausgeführt, jedoch wird mir die ausgabe davon ins errorlog geschrieben. ich hatte das schon mal hinbekommen hab aber vergessen wie

    wenn ich aber zB mit probiere, geht es. aber nicht mit rsh nur mit ping.
    Code:
    system("ping >/tmp/test");
    woher soll ich wissen was ich denke, bevor ich höre was ich sage?!

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    system() liefert Dir nur den Rückgabewert des Kommandos...

    Code:
    my $retval = system('ls /home');
    print $retval;
    Die Ausgabe ist 0, denn ls wurde erfolgreich ausgeführt.

    Wenn Du den Output an STDOUT Deines Programmes abfangen willst, musst Du entweder Backticks benutzen oder qx//.

    Achte dabei auch darauf, dass Du STDERR auf STDOUT umleitest...

    mehr dazu: perldoc -f system

  3. #3
    Registrierter Benutzer Avatar von alex23
    Registriert seit
    01.12.2005
    Ort
    Köln
    Beiträge
    11
    gut gut... nun hab ich verschiedenes aus probiert und hab das problem ein wenig eingekreist...

    also folgendes:

    Code:
    open (DAT, '>> c:/tmp/out.txt');
    $A = `netstat -n`; 
    print DAT $A,"\n";
    close DAT;
    das geht und ich bekommen meinen output in die datei.
    mach ich aber $A = `rsh 192.168.0.23 -l userlogin ausführbaredatei.exe`;
    oder eben test weise nur $A = `rsh`;, bekomm ich keinen output. ich kann mir das dann im error.log meines apache angucken. also schreibt rsh in stderr. oder wie seht ihr das? kann ich das dann irgendwie abfangen?
    ich brauch unbedingt nen output von dem commando, also rsh was ich ausführe. ohne ausgabe klappt alles wunderbar. aber ich würde gern nachprüfen können obs geklappt hat.

    mit print DAT $stderr; scheint es auch nicht zu klappen
    woher soll ich wissen was ich denke, bevor ich höre was ich sage?!

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.08.2004
    Beiträge
    404
    Da gibt es viele Möglichkeiten - die einfachste ist wohl, bei der Ausführung des Shell Kommandos STDERR nach STDOUT umzuleiten...

    Code:
    $A = `netstat -n 2>&1`; 
    print DAT $A,"\n";
    close DAT;

  5. #5
    Registrierter Benutzer Avatar von alex23
    Registriert seit
    01.12.2005
    Ort
    Köln
    Beiträge
    11
    danke, das hat funktioniert!

    heute auch mal bei einen kollegen endlich das perl-kochbuch bekommen und da stand dann alles drin ^^
    woher soll ich wissen was ich denke, bevor ich höre was ich sage?!

Lesezeichen

Berechtigungen

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