PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : cgi script umschreiben in normales perl script



dilindam
30-01-2006, 10:30
Hallo allerseits,

ich habe kaum Ahnung von CGi und PERL.
Brauche ich eigentlich auch nicht. Dafuer arbeite
ich damit zu selten. Nun habe ich aber das Problem
das ich hier ein CGI Skript habe das wunderbar laeuft.
Nur meinem Supervisor ist cgi zu unsicher.

Nun braeuchte man das cgi Skript doch nur umschreiben in ein
perl Skript. Da haengt es aber bei mir.

Also das cgi skript gehoert zu mailgraph, ein Programm welches
mir aus des syslog den email-verkehr mittels rrdtool auswertet.

das mailgraph.cgi erstellt mir die Graphen. Die liegen dann bereits schon in einel temp verzeichnis. nur wie gesagt darf ich kein cgi benutzen.

perl mailgraph.cgi zeigt mir den htmlcode, erstellt aber keine Graphen,
lynx dump auch nicht.

Wie mache ich das am besten?

Bitte um Hilfe

MfG Torsten

michael.sprick
31-01-2006, 14:55
generell macht es keinen Unterschied, ob das Skript nun als CGI läuft oder direkt an der Konsole...

Achte darauf, dass benötigte Umgebungsvariablen (%ENV) vorhanden sind.

Was die Bilder betrifft, so könnte es natürlich sein, dass diese nicht einmalig erzeugt und dann gespeichert werden, sondern zur Laufzeit über das <image> Tag vom Skript angefordert werden.

Das Skript erzeugt also erstmal HTML Code mit z.B


<img src="skript.pl?getImage=123123">


Für jedes Image würde dann wieder das Skript angeschmissen um diesmal kein HTML auszugeben, sondern Binärdaten... das Bild eben.

In dem Fall funktioniert dass nicht so einfach.

Häng das Skript doch mal an...

dilindam
31-01-2006, 18:09
[QUOTE

Häng das Skript doch mal an...[/QUOTE]


Jup, werd ich mal machen.

MfG

michael.sprick
31-01-2006, 18:39
Vermutung bestätigt:


...
print "<P><IMG BORDER=\"0\" SRC=\"$scriptname?${n}-n\" ALT=\"mailgraph\">\n";
print "<P><IMG BORDER=\"0\" SRC=\"$scriptname?${n}-e\" ALT=\"mailgraph\">\n";

...


Dort wird der HTML Code erzeugt, der ein image Tag enthält, welches als src wiederum das Skript mit entsprechendem Parameter aufruft...
Wenn dieser Parameter da ist, wird der Graph erzeugt und die Funktion send_image aufgerufen... die gibt dann das Bild mit entsprechendem Header aus.

Die einfachste Methode ist vermutlich, das Verzeichniss, in dem das Skript per Webserver erreichbar ist zu schützen, so dass es von außen nicht erreichbar ist.
Die HTML Dateien + Bilder erzeugst Du dann einfach, indem Du das Skript per wget oder curl lokal aufrufst...

Ansonsten müsstest Du das Skript ein wenig ändern.
Der HTML Code muss so geändert werden, dass ein statischer Pfad zum bild angegeben wird (kein Skript) und in main() müssen ein paar Änderungen bzgl. der Pfade und der Bilderzeugung gemacht werden.

dilindam
31-01-2006, 18:49
Die einfachste Methode ist vermutlich, das Verzeichniss, in dem das Skript per Webserver erreichbar ist zu schützen, so dass es von außen nicht erreichbar ist.
Die HTML Dateien + Bilder erzeugst Du dann einfach, indem Du das Skript per wget oder curl lokal aufrufst...


also mit wget, curl oder auch lynx geht gar nichts. das verzeichnis bleibt leer.
das verzeichnis jetzt absichern koennte ich zwar, aber das will der alte nicht.

ich bin schon dabei beim umschreiben. vielleicht kannste mir da noch bisserl weiterhelfen.

fg

michael.sprick
31-01-2006, 19:13
ok,

also es sieht so aus, als würde dem Skript immer ein Parameter übergeben - irgend'ne ID oder sowas...

ist das immer die selbe oder sind es verschiedene?

Poste mal ein Beispiel, oder besser gleich zwei, wie Du das Skript normalerweise aufrufst.

dilindam
01-02-2006, 07:45
ok,
Poste mal ein Beispiel, oder besser gleich zwei, wie Du das Skript normalerweise aufrufst.

Das Skript ist aus dem Programm mailgraph von David Schweikert.
http://people.ee.ethz.ch/~dws/software/mailgraph

Vielleicht sollte ich den erstmal fragen.

Es wird im Browser (Mozilla) aufgerufen. http://domain de/cgi-bin/mailgraph.cgi
Auf dem Rechner laeuft das mailgraph.pl Skript welches Daten aus der
maillog sammelt und in eine RRD speichert.
mailgraph.cgi ist dann dafuer da die Grafiken zu erstellen.

MfG
Torsten