Casandro: CGI über CGI aufrufen

Gibts eine Möglichkeit Cgi Scripte (Perl) über ein anderes Perl Script (evtl. auf anderem Server)aus aufzurufen, um z.B. Mehrere Sachen kombinieren zu können???
Danke für die Antworten

  1. Hi,

    Gibts eine Möglichkeit Cgi Scripte (Perl) über ein anderes Perl Script (evtl. auf anderem Server)aus aufzurufen, um z.B. Mehrere Sachen kombinieren zu können???

    libwww installieren, falls nicht schon vorhanden

    use LWP::Simple;

    $document_inhalt = LWP::Simple::get ($beliebiger_url);

    if (defined ($document_inhalt)) { ... }

    1. Hallo,

      dieses Thema interessiert mich auch sehr, hätte deshalb auch einige Frage. Hoffentlich ist das jetzt nicht fehl am Platz aber mein Probelm ist irgendwie so ähnlich.

      Wie geht das nun weiter, wenn ich kein Perl Script sondern ein Programm starten will (liegt auf einem anderen Server(Beispiel.exe)).

      use LWP::Simple;

      $document_inhalt = LWP::Simple::get ($beliebiger_url);

      if (defined ($document_inhalt)) { ????? Ausführen von Beispiel.exe }

      Was steht jetzt eigentlich in $document_inhalt.

      Sorry für die Einmischung

      Gruss

      1. Hi,

        Wie geht das nun weiter, wenn ich kein Perl Script sondern ein Programm starten will (liegt auf einem anderen Server(Beispiel.exe)).
        if (defined ($document_inhalt)) { ????? Ausführen von Beispiel.exe }

        Über welchen Kommunikationsweg hast Du Zugriff auf diesen anderen Server?
        Der Zugriff auf das andere CGI-Skript war durch seine CGI-Eigenschaft
        implizit klar - für beispiel.exe gilt das nicht.

        Was steht jetzt eigentlich in $document_inhalt.

        Der Inhalt des vom CGI-Skript erzeugten Dokuments (also das, was Du im
        Browser mit "view-source" sehen würdest, wenn Du $beliebiger_url in die
        URL-Zeile eingegeben hättest).

        Viele Grüße
              Michael

        1. Hi,

          danke, das Program Beispiel.exe soll auf einem FTP-Server liegen welcher bei uns in der Firma steht (Standleitung ....).

          Von unserer Webpage aus (Webserver Provider ...) soll nun eben dieses blöde Programm gestartet werden es benötigt 2 Inputs (Name,Wohnort) und berechnet einen Key schreibt diesen in eine Datei

          Ich habe mich schon ein bisschen damit beschäftigt und schon alle möglichen Leute genervt. Mein lächerliches wissen was Perl betrifft macht mir nicht gerade Mut, aber vielleicht ist es ja doch zu realisieren.

          Hier das Problem:
          Von unserer Webseite aus sollte ein Perl Script gestartet werden (Sript Webserver) diese Script wiederum startet ein anderes Script welches sich auf dem FTPserver befindet in unserer Firma dieses Script (FTPserver) wiederum startet Beispiel.exe welches sich ebenfalls auf dem FTPserver befindet (ist also nicht ganz so wie ich schon gefragt habe). so in der Art sollte das doch möglich sein oder??

          Zusammenfassung:
          1. Wie starte ich ein Perl script auf einem anderen Server (FTP) siehe deine Erläuterung?

          libwww installieren, falls nicht schon vorhanden

          use LWP::Simple;
          $document_inhalt = LWP::Simple::get ($beliebiger_url);
          if (defined ($document_inhalt)) { ... }
          $beliebiger_url="ftp://ftp.server2.com/pub/beispiel.exe" ??

          2. Wie kriege ich die Input Parameter von der Webpage zum c:/Test/Beispiel.exe Parameter_Name Parameter_Wohnort

          3. Wie kriege ich den berechneten Key von Beispiel.exe wieder zur Webpage

          Gruss

          1. hallo,

            Zusammenfassung:

            1. Wie starte ich ein Perl script auf einem anderen Server (FTP) siehe deine Erläuterung?

            libwww installieren, falls nicht schon vorhanden

            use LWP::Simple;
            $document_inhalt = LWP::Simple::get ($beliebiger_url);
            if (defined ($document_inhalt)) { ... }
            $beliebiger_url="ftp://ftp.server2.com/pub/beispiel.exe" ??

            AFAIK besitzt das FTP-Protokoll keinen Mechanismus wie CGI. Es ist zum Austausch von Dateien gedacht (File Transfer Protocoll).
            Deshalb denke ich wäre es wohl besser, auf dem FTP-Server auch gleich einen Webserver laufen zu lassen.
            Dabei kann der Webserver auch auf einem nicht prominenten Port (also nicht unbedingt Port 80) laufen.
            Da ja nur ein Austausch mit Deinem Ausgangsscript funktionieren soll,
            kannst es Du auch einigermaßen gut schützen, indem Du nur Dein Script als Client erlaubst.
            Dazu kannst beispielsweise einen eigenen Bezeichner als Agent verwenden.
            Die Geschichte mit dem Returncode ist dann auch relativ einfach.

            Mir ist klar, dass da noch einige Sicherheitsaspekte mehr zu berücksichtigen sind. Aber da hat ja das Web und Perl inzwischen einiges zu bieten, SSL und so weiter.
            Allerdings ziehe ich oft einen Webserver mit einem  CGI-Script einer selbstgestrickten Serverlösung vor, weil hier das Enviroment schon recht ordentlich ist.

            Die beiden restliche Fragen lösen ich dann ja wohl von selbst.

            Grüße
              Klaus

            1. Hi,

              Deshalb denke ich wäre es wohl besser, auf dem FTP-Server auch gleich einen Webserver laufen zu lassen.

              jo hätte mir auch klar sein müssen das das alleine mit dem FTP-Server nicht tut. So wie ich das aber sehe komme ich da von einem tiefen Gewässer ins nächste.

              Kann sein dass ich mich jetzt engültig total lächerlich machen trotzdem wollt ich folgendes noch wissen:

              Ich habe mir um meine Scripte Lokal zu testen auf meinen Rechner einen lokalen Server instlliert das ging relativ einfach, wiel die installation sehr gut beschrieben war (OmniHTTPd). Könnt ihr mir da einen Tipp geben welchen Webserver ich am besten installiere oder wo das beschrieben ist was ich da alles zu tun habe.

              Danke war bisher schon spitze eure Tips

              Viele Grüsse Jürgen

              1. Hi,

                Kann sein dass ich mich jetzt engültig total lächerlich mache

                Keineswegs.

                Ich habe mir um meine Scripte Lokal zu testen auf meinen Rechner einen lokalen Server instlliert das ging relativ einfach, wiel die installation sehr gut beschrieben war (OmniHTTPd). Könnt ihr mir da einen Tipp geben welchen Webserver ich am besten installiere

                Das kommt darauf an, was Du damit tun willst.
                Wenn Du damit lokal testen willst, was Deine Programme später auf dem produktiven Server tun werden, dann wäre es am sinnvollsten, denselben Server lokal zu installieren. (Welcher das konkret bei Deinem Provider ist, kannst Du mit </selfaktuell/sonst/serverid.htm> nachsehen.)

                Rein statistisch gesehen bietet der Apache mit seinen 60+% Marktanteil weltweit (nach netcraft) dabei natürlich gewisse Vorteile ...

                Viele Grüße
                      Michael

          2. Hi auch,

            1. Wie starte ich ein Perl script auf einem anderen Server (FTP) siehe deine Erläuterung?

            Wie Klaus schon sagte: Dein Skript muß eine Verbindung einer Art aufbauen können, welche eine Ausführung eines Programms auf dem fremden Server erlaubt.
            FTP reicht dafür nicht aus; HTTP (mit CGI) oder remote shell würden funktionieren.

            $beliebiger_url="ftp://ftp.server2.com/pub/beispiel.exe" ??

            So geht es nicht. Auf dem Zielserver bräuchtest Du ein CGI-Skript, welches nichts anderes tut, als 'beispiel.exe' aufzurufen. Dafür gibt es die Funktion "system()" oder die sogenannten 'back ticks' - letztere sind in Deinem Falle wahrscheinlich sinnvoller.

            1. Wie kriege ich die Input Parameter von der Webpage zum c:/Test/Beispiel.exe Parameter_Name Parameter_Wohnort

            Von CGI-Skript zu CGI-Skript über den URL; vom zweiten CGI-Skript zum "beispiel.exe" über dessen Parameterliste (das ist dann ein normaler lokaler shell-Aufruf).

            1. Wie kriege ich den berechneten Key von Beispiel.exe wieder zur Webpage

            Das hängt von "beispiel.exe" ab.
            Wenn Du beeinflussen kannst, wie dieses Programm den Key ausgibt, dann ist es am einfachsten, ihn nach stdout zu schreiben.
            Was dieses Programm nach stdout schreibt, kann das zweite CGI-Programm über die 'back ticks' auffangen:

            my $computed_key = beispiel.exe parameter1 parameter2;

            Und von Skript 2 zu Skript 1 geht es wieder über stdout, denn Skript 1 fängt ja mit LWP::Simple::Get das von Skript 2 erzeugte Dokument auf.

            Viele Grüße
                  Michael