Kai: Batch-File via Perl starten

Hallo zu sammen

Ich habe ein Perl-Script, mit welchem ich zwingend eine Batch-Datei ausführen muss.

Ich dachte der passende Befehl wäre:

system('PFAD/batchfile.bat');

Dies funktioniert auch wenn ich das Perl-Script lokal auf dem Webserver direkt von Kommandozeile starte.

Wenn ich jedoch das selbe Script über das cgi-bin vom Webserver aufrufe, wird der Batch nicht gestartet.

Wiso das? Ist das ein Sicherheits-Feature? Ich habe IIS 6.0 (Windows 2003, SP1) und die aktuellsten PERL runtimes.

  1. Ich dachte der passende Befehl wäre:

    system('PFAD/batchfile.bat');

    Ja ist der, hast du geprüft ob die Datei exisiert?

    print (-e 'PFAD/batchfile.bat' ? 'existiert' : 'existiert nicht');

    Struppi.

    1. Hallo

      print (-e 'PFAD/batchfile.bat' ? 'existiert' : 'existiert nicht');

      ja, das habe ich gemacht. Die Daeti sieht er, nur wird sie nicht ausgeführt.

      Ich weis nicht, aber es könnte evtl. etwas mit Sicherheitbeschränkungen zu tun haben?

      Weil, wenn ich das Perl-Script lokal aus der Kommandozeile ausführe, wird anschliessend auch der Batch ausgeführt. Nur beim Aufruf aus dem Browser (im cgi-bin des Servers) funktionierts nicht.

      1. Hallo Kai,

        Ich weis nicht, aber es könnte evtl. etwas mit Sicherheitbeschränkungen zu tun haben?

        hat dein Webserver Ausführrechte für die "batchfile"?

        Gruß,
        Benne

        --
        ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)
  2. Moin.

    Wenn ich jedoch das selbe Script über das cgi-bin vom Webserver aufrufe, wird der Batch nicht gestartet.

    Was liefert "system" als Fehler zurück?

    @args = ("command", "arg1", "arg2");
    system(@args) == 0
         or die "system @args failed: $?"

    Genauere Auskunft über den Fehler bekommst Du, wenn Du $? auswertest. Siehe auch "perldoc - f system"

    Und steht etwas in den Serverlogs?

    Gruß Frank

    1. Hallo

      @args = ("command", "arg1", "arg2");
      system(@args) == 0
           or die "system @args failed: $?"

      Genauere Auskunft über den Fehler bekommst Du, wenn Du $? auswertest. Siehe auch "perldoc - f system"

      Also, habe ich mal gemacht. Bekomme den Exitcode 65280, mit welchem ich nicht wirklich was anfangen kann.

      Gruss KAI

      1. Also, habe ich mal gemacht. Bekomme den Exitcode 65280, mit welchem ich nicht wirklich was anfangen kann.

        eigentlich sollte er 0 sein, dann stimmt etwas mit der Batchdatei nicht.

        Struppi.

      2. Hallo,

        Also, habe ich mal gemacht. Bekomme den Exitcode 65280, mit welchem ich nicht wirklich was anfangen kann.

        Den Wert musst Du durch 256 dividieren, um den Wert des ERRORLEVEL's zu bekommen (also 255). Irgendeine Funktion Deines Batchfiles liefert also 255, was das auch immer bedeuten mag.

        Überprüfe auch den Benutzer, unter dem der Webserver läuft (üblicherweise 'Lokales Systemkonto') und ob dieses auch alle notwendigen Rechte hat (Zugriff auf die verwendeten programme, Verzeichnisse, Dateien). Ausserdem könnte sich das Batchfile eventuell auf bestimmte Umgebungsvariablen verlassen, die bei deinem Benutzer gesetzt sind, aber nict beim System-Account (Stichwort 'Benutzervariablen').

        Grüße
          Klaus