mike: einfacher cgi befehl - error 500

Hi Leute.
Ich habe ein redhat 9 mit Apache usw. mein Problem:
es soll ein einfaches cgi Script ausgeführt werden, nur bekomm ich da "premature end of script headers: switch.cgi".
Das Script soll nichts ausgeben, sondern nur einen Befehl (auf dem server) ausführen, wie z.b. "ping blalba".
Wenn ich das Script per "hand" anstosse d.h. "perl switch.cgi" dann klappts.
Das Script beinhaltet nur den perl pfad und den befehl. alle anderen cgi's lassen sich problemlos ausführen...

Wer hat eine Idee ???

danke
mike

  1. hallo mike,

    Wenn ich das Script per "hand" anstosse d.h. "perl switch.cgi" dann klappts.
    Das Script beinhaltet nur den perl pfad und den befehl. alle anderen cgi's lassen sich problemlos ausführen...

    Da kommen grundsätzlich zwei Dinge infrage:
    1. die Rechte stimmen nicht, dein Script ist nicht "ausführbar"
    2. es fehlt ein "print 'Content-type: text/...'", damit der Browser was damit anfangen kann.

    Ansonst müssen wir halt ohne Kenntnis deines Scripts allerhand Glaskugeln befragen.

    Grüße aus Berlin

    Christoph S.

    1. Hallo Christoph,
      danke erstmal für die super-schnelle Antwort !

      Da kommen grundsätzlich zwei Dinge infrage:

      1. die Rechte stimmen nicht, dein Script ist nicht "ausführbar"

      Jepp, mein Script war nicht ausführbar, jetzt bekomme ich:
      "mailformed header from script. bad header..."

      1. es fehlt ein "print 'Content-type: text/...'", damit der Browser was damit anfangen kann.

      Was könnte denn da rein, wenn das Script nichts ausgeben soll ?

      Ansonst müssen wir halt ohne Kenntnis deines Scripts allerhand Glaskugeln befragen.

      Klar, sorry, hier mein Script:
      #!/usr/bin/perl
      system ('perl', 'epc_control.pl', '--host=|IP Adresse|', '-off');

      Mag vielleicht komisch erscheinen, hat aber seinen Sinn!

      danke
      Mike

      1. Hallo,

        du solltest einen HTTP-Header senden, so
        wie es die Fehlermeldung sagt.

        gruss

        --
        no strict;
        no warnings;
        Zucker ist das, was dem Kaffee den schlechten Geschmack gibt, wenn man es nicht hineintut.
        1. Hallo,

          du solltest einen HTTP-Header senden, so
          wie es die Fehlermeldung sagt.

          gruss

          hi, danke für den tipp !
          hab's mit der info (und ner befehltsänderung) hinbekommen. jetzt wird ein html ausgeben. da steht dann z.b. "befehl ausgeführt", aber das script funktioniert!
          kann ich dass noch irgendwie abschalten. so zu sagen in einen "silent /quite mode" wechseln?

          danke
          mike

      2. hallo,

        hier mein Script:
        #!/usr/bin/perl
        system ('perl', 'epc_control.pl', '--host=|IP Adresse|', '-off');
        Mag vielleicht komisch erscheinen, hat aber seinen Sinn!

        Das erscheint allerdings komisch. Und mag bei mir in dieser Form auch nicht auf der Konsole funktionieren (daß ich auf die Schnelle mal ein Script "epc_control.pl" bauen kann, wirst du mir glauben müssen). "perldoc system" liefert mir auch keine Aussage, und was das Ganze soll, erschließt aich mir nicht (Unrecognized switch: --host=|IP Adresse|). Auf jeden Fall ist das _kein_ CGI-Script. Ein _ungetesteter_ Vorschlag:

        #!/usr/bin/perl
          $a = system ('perl', 'epc_control.pl', '--host=|IP Adresse|', '-off');
          print "Content-type: text/plain\n\n";
          print $a;
          exit;

        Grüße aus Berlin

        Christoph S.