Apollo: Porgramm mit CGi Starten

Ich lasse auf meinem Server ein CGI/Perl Skript laufen und will damit auf dem server ein programm starten(eine exe datei), zum Bsp. Notepad.exe oder sowas.

wie kann ich das mit einem perl skript machen?

  1. Ich lasse auf meinem Server ein CGI/Perl Skript laufen und will damit auf dem server ein programm starten(eine exe datei), zum Bsp. Notepad.exe oder sowas.

    wie kann ich das mit einem perl skript machen?

    Dazu brauchst du kein Perl skript:

    http://localhost/notepad.exe startet notepad auf dem Server, falls es im Stammverzeichnis liegt. Warum du das aber willst ist mir schleierhaft.

    Struppi.

    1. will ein webinterface machen mit dem man den server resetten kann. das wird ne normale internetseite, wo dann die reset.exe datei über ein cgi script gestartet werden soll.

      so kann ich net machen,weil dann quasi jeder die datei starten könnte
      http://localhost/notepad.exe
      das script soll dann noch username und opasswort abfragen, das aber kein problem.
      Weis nur nciht wie man dann auf dem server die exe-datei startet,vom cgi script aus

      1. Moin!

        Weis nur nciht wie man dann auf dem server die exe-datei startet,vom cgi script aus

        Sicher hat Perl sowas wie einen system() Befehl. PHP hat ihn ja auch...

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Meinereinerselbst ist auf der Suche nach Aufträgen
      2. Hi Apollo,

        so kann ich net machen,weil dann quasi jeder die datei starten könnte

        das Ausführen eines Programms auf dem Server und der Zugriff auf einen URL sind zwei völlig getrennte Mechanismen.

        das script soll dann noch username und opasswort abfragen, das aber kein problem.
        Weis nur nciht wie man dann auf dem server die exe-datei startet,vom cgi script aus

        Du brauchst kein CGI-Skript. Du kannst direkt Dein reset.exe-Programm starten - und in Deiner Webserver-Konfiguration regeln, unter welchen Voraussetzungen dies erlaubt ist.

        Der Webserver kann viel mehr, als Du denkst - Du mußt nicht alles selbst programmieren. Insbesondere Zugriffskontrolle ist ein Thema, wo Du so viel verkehrt machen kannst, daß es besser ist, auf etablierte Lösungen zurück zu greifen.

        Viele Grüße
              Michael

        --
        T'Pol: I apologize if I acted inappropriately.
        V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
        (sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
         => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
        Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.
    2. Moin!

      http://localhost/notepad.exe startet notepad auf dem Server, falls es im Stammverzeichnis liegt.

      Oh..Oh. Da ist aber einiges gefährlich konfiguriert.... Insbesondere sollte man dem Dienst Apache die Kommunikation mit dem Desktop verbieten.

      Ferner wird der Notepad in der Standardkonfiguration zum Download angeboten statt gestartet.

      Es sei denn: man hat folgendes in der httpd.conf sttehen:

      AddHandler cgi-script .exe
      Wie gesagt: Achtung! Das ist gefährlich! Das sollte man nur machen, wenn man dem Apache ein stark eingeschränktes Nutzerkonto zugewiesen hat (Verwaltung -> Dienste) und den bösen Benutzer "jeder" als Rechteinhaber aus allen Ordnern des Systems verbannt hat.
      Natürlich bracht der Apache dann die notwendigen Zugriffsrechte für Serverrroot (und darunter) und für das eigene Programmverzeichnis. In /logs/ zb. auch Schreibrechte.

      Warum du das aber willst ist mir schleierhaft.

      Notepad ist wirlich ein schlecht gewähltes Beispiel. Vielleicht will er seinen Rechner ja klingeln lassen, wenn sich ein Besucher verirrt :)

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Meinereinerselbst ist auf der Suche nach Aufträgen
      1. und wie muss ich das dann in das CGI Skript schreiben, das ich das Programm starten kann ? ( ist ein Programm zum Resetten, notepad,war nur einbeispiel)

        1. und wie muss ich das dann in das CGI Skript schreiben, das ich das Programm starten kann ? ( ist ein Programm zum Resetten, notepad,war nur einbeispiel)

          Wenn Du es wirklich auf diese gefährliche Tour machen willst reicht ein Link auf reset.exe. Diese wird dann genau so ausgeführt wie ein Perl- Script. Da der Server ohnehin beendet wird brauchts Du keine Rückgabe...

          Besser:

          http://www.perldoc.com/perl5.8.0/pod/func/exec.html

          fastix®

      2. Moin!

        http://localhost/notepad.exe startet notepad auf dem Server, falls es im Stammverzeichnis liegt.

        Oh..Oh. Da ist aber einiges gefährlich konfiguriert.... Insbesondere sollte man dem Dienst Apache die Kommunikation mit dem Desktop verbieten.

        Ferner wird der Notepad in der Standardkonfiguration zum Download angeboten statt gestartet.

        Ah, ich hatte ganz das cgi-bin vergessen

        http://localhost/cgi-bin/notepad.exe

        allerdings erschient in deinem Browser dann ein Fehler, weil notepad kein gültigen HTML header zurückgibt. Mit Perl gäbe es mehrere Möglichkeiten, system und backticks zum beispiel.

        Struppi.

  2. hi Apollo,

    wie kann ich das mit einem perl skript machen?

    $result =c:/system32/notepad.exe;

    (ja das sind slashes)
    Grüße Oesi

    1. wie kann ich das mit einem perl skript machen?

      $result =c:/system32/notepad.exe;

      (ja das sind slashes)

      nö, backticks.

      Struppi.

      1. nö, backticks.

        das '/' ist ein slash und kein '/' backslash

        Grüße Oesi

        1. das '/' ist ein slash und kein '/' backslash

          natürlich falsch: so '' sieht ein backslash aus.

          Grüße Oesi

          1. Moin!

            das '/' ist ein slash und kein '/' backslash

            Struppi schrieb aber:

            nö, backticks.

            back('`'), weil ticks vermutlich so aussehen: '´'.

            Die Franzosen nennen das accsant de gu bzw. accsant de graf (Schreibwiese oder so ähnlich...)

            Merke: (back)slash != (back)ticks. Auch wenn die ticks sehr klein sind.

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Meinereinerselbst ist auf der Suche nach Aufträgen