PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : FUNKTION uebers WEB



Stift
02.08.05, 08:46
Hallo,

ich mochte ueber einen Button im Web eine Funktion (cp) auf dem Server ausfuehren.
Wie realisiere ich das?
War da nicht etwas mit perl und cgi?

Kann mir jemand helfen?

marce
02.08.05, 09:01
(1) ja
(2) in dem Perl-Script ein system () oder ein qx () ausführen.

marce
02.08.05, 09:06
ach ja - und je nach dem, was kopiert werden soll - sudo verwenden, da der Kopierprozess unter dem Apacheuser läuft...

Stift
02.08.05, 09:56
Was ist jetzt der perl- und der cgi-Teil?(kurzes Hintergrundwissen!)

marce
02.08.05, 10:10
erstelle ein perl-script, das den Kopiervorgang ausführt und lege das in ein VZ, in dem der Apache CGIs ausführen darf, gib dem Script die entsprechenden Rechte und konfiguriere den Apache entsprechend.

für weiteres:

http://de.selfhtml.org/perl/index.htm

und

http://httpd.apache.org/docs/1.3/howto/cgi.html

MiGo
02.08.05, 10:25
Da hier eine Begriffliche Verwirrung zu bestehen scheint:
cgi ist die Abkürzung für "Common Gateway Interfaces" und bezeichnet eine Schnittstelle; perl ist eine Programmiersprache, mit der man diese Schnittstelle nutzen kann *)
Solltest du Perl nicht mögen (oder gar Angst vor explodierten ASCII-Fabriken haben ^^) kannst du das Programm auch in C, php, python, ruby oder vielen anderen Sprachen schreiben *g*.

Es wäre übrigends sehr hilfreich, wenn du genau beschreiben könntest, was auf dem Webserver geschehen soll. Je nachdem, was von wo nach wo kopiert werden muss, und wie genau es implementiert ist, reisst du nämlich Sicherheitslücken in den Webserver, in denen ein 747 wenden könnte :)

Du könntest es so machen (in php, für perl bin ich gerade zu faul):
(erwartet die Variablen $von und $nach aus einem Formular)

system ("sudo cp $von $nach");

Der Benutzer, unter dem Apache läuft, muss via "visudo" natürlich berechtigt sein, "cp" ohne passwort mit rootrechten auszuführen.


MiGo


P.S.: Wenn du das übrigends einfach so übernimmst, war das mal dein Webserver ^^

* http://de.wikipedia.org/wiki/Common_Gateway_Interface

Stift
02.08.05, 10:33
Hallo,

es funktioniert, aber ein kleines Problem wenn ich das script ueber Http ausfuehre dann bringt der Server obwohl es funktioniert hat folgende Meldung:



Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.


aber in den Logfile(/var/log/httpd/error) finde ich nichts!

marce
02.08.05, 11:10
vermutlich liefert Dein Script keinen konformen html-header zurück...

stefan-tiger
02.08.05, 11:11
Über cgi kannst du auch einfach Shell-Scripts ausführen.

Stift
02.08.05, 11:13
html-header wird nicht zurueck geliefert.

Wie Sieht dieser aus?

marce
02.08.05, 11:21
hast Du den Text gelesen?

http://httpd.apache.org/docs/1.3/howto/cgi.html


scheinbar nicht komplett...


http://httpd.apache.org/docs/1.3/howto/cgi.html#writingacgiprogram

ist der relevante Part...


edit: Wunschlos-glücklich-Link ergänzt

Stift
02.08.05, 11:30
nein aber ich habs gefunden

marce
02.08.05, 11:33
nein

naja, nur um ein bisschen farbigen und unterstrichenen Text in die Postings zu bekommen habe ich den dort nicht reingeschrieben ;-)