Horst: Kommandos im pretag ausgeben

hi,

gleich zur Sache: Mein CGI Script hat ein Inputfeld, da gebe ich bspw. ein Kommando ein (sofern das Script auf XP läuft):
dir

Perl nimmt das Kommando entgegen und gibt das Ergebnis aus:
my $res = qx($command);

print "<pre> \n $res \n </pre> \n";

Komischerweise werden einzelne Zeilen scheinbar willkürlich von oben nach unten immer weiter eingerückt, wenn ich in den Quelltext schaue, steht jedoch alles "gerade" drin, ohne Einrückung.

Lasse ich das Script auf Linux laufen, passt alles korrekt, z.B.: "ls -l"

Woran kann diese schräge Darstellung unter XP liegen?

Viele Grüße,
Hotte

  1. gleich zur Sache: Mein CGI Script hat ein Inputfeld, da gebe ich bspw. ein Kommando ein (sofern das Script auf XP läuft):
    dir

    Perl nimmt das Kommando entgegen und gibt das Ergebnis aus:
    my $res = qx($command);

    print "<pre> \n $res \n </pre> \n";

    Komischerweise werden einzelne Zeilen scheinbar willkürlich von oben nach unten immer weiter eingerückt, wenn ich in den Quelltext schaue, steht jedoch alles "gerade" drin, ohne Einrückung.

    Hast du dir den Quelltext mal angeschaut?

    Struppi.

    1. hi,

      Komischerweise werden einzelne Zeilen scheinbar willkürlich von oben nach unten immer weiter eingerückt, wenn ich in den Quelltext schaue, steht jedoch alles "gerade" drin, ohne Einrückung.

      Hast du dir den Quelltext mal angeschaut?

      Linux: Quelltext sieht so aus wie die Ausgabe im pre-Tag
      XP: Quelltext sieht so aus, wie die Ausgabe im pre-Tag aussehen müsste. Letzteres ist jedoch von Zeile zu Zeile ein Stück weiter eingerückt, was im Quelltxt nicht der Fall ist.

      Hotte

      1. Hast du dir den Quelltext mal angeschaut?

        Linux: Quelltext sieht so aus wie die Ausgabe im pre-Tag
        XP: Quelltext sieht so aus, wie die Ausgabe im pre-Tag aussehen müsste.

        Du hast nicht Firefox?
        Dann fällt dir natürlich auch nicht auf, dass der Quelltext (also die Ausgabe von dir) HTML Tags enthält.

        Struppi.

        1. Hast du dir den Quelltext mal angeschaut?

          Linux: Quelltext sieht so aus wie die Ausgabe im pre-Tag
          XP: Quelltext sieht so aus, wie die Ausgabe im pre-Tag aussehen müsste.

          Du hast nicht Firefox?
          Dann fällt dir natürlich auch nicht auf, dass der Quelltext (also die Ausgabe von dir) HTML Tags enthält.

          ich Kamel, das <DIR> - Tag ;-)

          Ok, danke!!!!

          Viele Grüße vom Baumarkt,
          Horst Haselhun

          1. Hallo Horst!

            Dann fällt dir natürlich auch nicht auf, dass der Quelltext (also die Ausgabe von dir) HTML Tags enthält.

            Ich hatte auch verstanden, Struppi meinte die Ausgaben von Dir [1] ;)

            ich Kamel, das <DIR> - Tag ;-)

            Das passiert DIR nicht noch mal, was?

            [1] Deswegen bleibe ich bei der altdeutschen Großschreibung für Du, Dich, Dir

            Viele Grüße aus Frankfurt/Main,
            Patrick

            --

            _ - jenseits vom delirium - _
            [link:hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash]
            Nichts ist unmöglich? Doch!
            Heute schon gegökt?
            1. hi Patrick,

              ich Kamel, das <DIR> - Tag ;-)

              Das passiert DIR nicht noch mal, was?

              Keine Ahnung. Ich habs vorhin wirklich nicht gesehen. Vielen Dank nochmal ans Forum, Stuppi u. alle.

              Viele Grüße,
              Hotte

              PS: Mit dem Script werde ich heute abend auf dem Server meines Providers ein bischen rumschnüffeln. Der denkt wohl auch, wenn er mir keinen telnet-Zugang gibt, kann ich das nicht :D

  2. Hi Hotte!

    Ich seh in deinem Code \n; wußtest du, dass Windows/DOS Zeilen standardmäßig mit \r\n (0x0D 0x0A) abschließen?

    Ich vermute, dass es damit zu tun hat.

    Grüsse,
    Richard

    1. hi,

      Ich seh in deinem Code \n; wußtest du, dass Windows/DOS Zeilen standardmäßig mit \r\n (0x0D 0x0A) abschließen?

      Ich vermute, dass es damit zu tun hat.

      Ich hab die Datei in UNIX-Format umgewandelt, gleicher Effekt.

      -- Hotte

      Quelltext

      <pre>
       Datentr„ger in Laufwerk C: ist system
       Volumeseriennummer: B8A3-0CA3

      Verzeichnis von c:\

      29.05.2007  00:19                 0 AUTOEXEC.BAT
      29.05.2007  00:19                 0 CONFIG.SYS
      30.05.2007  14:45               288 Desktop.lnk
      29.05.2007  00:26    <DIR>          Dokumente und Einstellungen
      30.05.2007  08:41    <DIR>          lotus
      08.08.2007  10:37    <DIR>          mysql
      30.05.2007  08:28    <DIR>          Perl
      30.05.2007  08:37    <DIR>          Program Files
      26.10.2007  10:07    <DIR>          Programme
      28.12.2007  17:32    <DIR>          tmp
      08.08.2007  13:25    <DIR>          usr
      08.01.2008  15:57    <DIR>          WINDOWS
                     3 Datei(en)            288 Bytes
                     9 Verzeichnis(se),  7.701.303.296 Bytes frei

      </pre>

      Eingerücken tut Moz, IE ab der Zeile
      29.05.2007  00:26    <DIR>          Dokumente und Einstellungen

  3.   
    #!/usr/bin/perl  
      
    ###########################################################################  
    use strict;  
    use CGI 'param';  
      
    print "Content-type: text/html\n\n";  
    form(param('cmd'));  
    if(my $cmd = param('cmd')){ exe($cmd); }  
      
    exit;  
    ###########################################################################  
    sub exe{  
     my $cmd = shift;  
     my $res = qx($cmd);  
      
     # wg. DOS: <DIR>  
     $res =~ s/</&lt;/g;  
     $res =~ s/>/&gt;/g;  
      
     print "<pre>\n";  
     print $res;  
     print "</pre>\n";  
      
     return;  
    }  
    ###########################################################################  
    sub form{  
     my $cmd = shift;  
     print qq(  
       <script type="text/javascript">  
        function sf(){document.f.cmd.focus();}  
       </script>  
      
       <form action="$ENV{SCRIPT_NAME}" name='f'>  
        <fieldset><legend><b>Enter Command here:</b></legend>  
         <input name="cmd" value="$cmd" style="width:100%">  
        </fieldset>  
       </form>  
      
       <script type="text/javascript">sf();</script>  
     );  
     return;  
    }  
    ###########################################################################