Perl im Browser

Post Reply
Message
Author
MartinHeuser

Perl im Browser

#1 Post by MartinHeuser »

Heiho...

Ich habe hier ein Programm das in der Shell supi läuft. Nun will ich es aber im Apachen laufen lassen. An der Laufzeit sehe ich, daß es läuft und ich lasse mir ein log erstellen das auch anzeigt, daß es läuft. Nu meldet mir der Browser immer einen internen Fehler.

Im Log beschwert sich der Apache, daß irgendein Header Bad ist. Hmm, klar habe ich gedacht und auch brav ein <html> usw. geprintet, das wars aber nicht. Was ist das für ein Header?

Gruß Martin


[Wed Aug 15 17:35:45 2001] [error] [client 212.42.248.15] Premature end of script headers: /web/cgi-local/watch.cgi
[Wed Aug 15 17:36:56 2001] [error] [client 212.42.248.15] malformed header from script. Bad header= Webtraf: /web/cgi-local/watch.cgi
[Wed Aug 15 17:39:43 2001] [error] [client 212.42.248.15] malformed header from script. Bad header=<html><head></head><body> : /web/cgi-local/watch.cgi
[Wed Aug 15 17:40:39 2001] [error] [client 212.42.248.15] malformed header from script. Bad header=<html>: /web/cgi-local/watch.cgi
[Wed Aug 15 17:41:27 2001] [error] [client 212.42.248.15] malformed header from script. Bad header=<html>: /web/cgi-local/watch.cgi
[Wed Aug 15 17:41:48 2001] [error] [client 212.42.248.15] malformed header from script. Bad header=<html>: /web/cgi-local/watch.cgi

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Perl im Browser

#2 Post by bakunin »

Hi!

Keine Header angegeben? Also "Content-type: text/html" usw.?

Cheers,
Wolfgang

MartinHeuser

Re: Perl im Browser

#3 Post by MartinHeuser »

Hmmm. Ne, nur die üblichen HTML Tags... Anders gesagt, ich habe noch nie Perl für den Browser geschrieben.

Worauf soll ich denn da achten?

Gruß Martin

Sebastian Ude

Re: Perl im Browser

#4 Post by Sebastian Ude »

Könntest du das Script mal posten ?

MartinHeuser

Re: Perl im Browser

#5 Post by MartinHeuser »

Ja klar... momo

Also auf der Konsole läufts....

Gruß Martin



#!/usr/bin/perl

# -----------------------------------------------------------------
#
# Script zum Auswerten von Logfiles
#
# Author: Martin Heuser (martin.heuser@ndh.net)
# Datum: 17.06.2001
# Version: 0.9 b
#
# Nutzungsbedingungen: Mailware (Betreff bitte httpwatch.pl)
# Schicken Sie mir bitte eine EMail. Das Script ist an sich
# Freeware, ich moechte aber statistisch auswerten, wie schnell
# es weiter gegeben wird (wenn ueberhaupt <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle"> ).
#
# Beschreibung:
# --------------
# Tool das die Welt nicht braucht.
#
# Dieses Script ist entstanden weil ich mir die Arbeitsweise von
# assoziativen Arrays anschauen wollte. Mann kann es universell
# anpassen. Im Zweifelsfall einfach mal ne nette EMail schreiben.
# -----------------------------------------------------------------


#
### Vorarbeiten und Hilfe
#

($me = $0) =~ s#.*/##;

sub Usage {

print ("
");
print ("httpwatch.pl V0.9b \'Perl 5\!\' \(17.06.2001\) Mailware
Syntax: $me [-h]


Alle Parameter sind im Script selbst einzustellen

Anwendungsbeispiele:
----------------------

\.\/httpwatch.pl \| mail \-s \"Die besten Surfer\" all\@firma.com
Schon surft keiner mehr dumm durchs Internet :<!--no-->\-\)


\.\/httpwatch.pl
So werden die Top 100 der aufgerufenen Websites sortiert nach Traffic ausgegeben

");

die ("Script normal beendet");
}

while ($ARGV[0] =~ /^-/) {
$_ = shift;
(/^-help$/ || /^-H$/ || /^-h$/ || /^--help$/) && &Usage;
system ("clear");
print ("Illegale Option: $me $_
");
&Usage;
}


#
### Globale Einstellungen und Variablen
#

open (httpdlog,"/var/squid/logs/access.log") || die "/var/squid/logs/access.log konnte nicht geöffnet werden
";
$counter1 = 0;
$counter2 = 0;

$datum = `date`;
@datum = split (" ",$datum);
$wtag = @datum[0];
$mon = @datum<font size="1">;
$tag = @datum<font size="2">;



#
### Hauptprogramm
#

while ($input = <httpdlog>) {
chop ($input);
@input = split " ", $input;

if (@input[9] eq "-") {
@input[9] = 0;
}

$umbau = @input[6];
$umbau =~ s/http:<!--no-->\/\///;
$umbau =~ s/ftp:<!--no-->\/\///;
$umbau =~ s/\/.*//;
@input[6] = $umbau;

$umbau2 = @input<font size="3">;
$umbau2 =~ s/\/.*//;
$umbau2 =~ s/[<!--no-->//;
@input<font size="3"> = $umbau2;

if (@input[6] ne "troubadix.berlin.pixel.de" & @input<font size="3"> eq $tag) {
$key = @input[0]." ".@input[6];
# $key = @input[6]; #Das ist blos ne debug Option
@bytes{$key} += @input[9];

$key2 = @input[0];
@bytes2{$key2} += @input[9];
}


}


foreach $k (sort {$bytes{$b} <=> $bytes{$a}} keys %bytes) {

$Parm1 = $k;
$Parm2 = $bytes{$k};
$counter1++;

if ($counter1 <= "20") {
write STDOUT;
}

}

print "


";

foreach $k2 (sort {$bytes2{$b} <=> $bytes2{$a}} keys %bytes2) {

$Parm3 = $k2;
$Parm4 = $bytes2{$k2};
$counter2++;

if ($counter2 <= "20") {
# print ("$Parm3 $Parm4
");
$Parm5 += $Parm4;
# write GESAMT;
}

}

#print ("-------------------------
");
#print (" $Parm5
");


#
### Ausgabeformate
#

format STDOUT_TOP=
Webtraffic Top 20 - Seite @<<
$%
Hier wird mal die Webnutzung ausgewertet. Es werden Logfiles
vom @< @<< durchgezaehlt. Viel Spass.
$tag,$mon
Aenderungen vorbehalten

Platz IP Adresse URL verblasene Bytes
-------------------------------------------------------------------------------------------

.

format STDOUT=
@<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<
$counter1,$Parm1, $Parm2
.

format GESAMT_TOP=
Gesamtverbrauch nach IP Adresse sortiert - Seite @<<
$%

Platz IP Adresse Bytes
--------------------------------------------------

.

format GESAMT=
@<<<< @<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<
$counter2,$Parm3,$Parm4
.

MartinHeuser

Re: Perl im Browser

#6 Post by MartinHeuser »

Hmmm.. Da fehlen Zeichen... Lasst Euch von fehlenden Zeichen @input<font size="3"> ist z.B. nur @input nicht irritieren.

Gruß Martin

ratte

Re: Perl im Browser

#7 Post by ratte »

lieber martin,

perl ist geil, dein posting nicht.

les' mal die hilfe, button oben

und mach eine vorschau, bevor du was postest.

sorry, so lese ich dein script nicht

ratte

Descartes

Re: Perl im Browser

#8 Post by Descartes »

@martin
Pack mal dein komplettes Perl Listin in die [<!--no-->code<!--no-->]....[<!--no-->/code<!--no-->] Klammerung

Nicht vergessen dass etwas das in eckigen Klammern steht vom Forum hier ausgewertet wird; also meinarray[<!--no-->5<!--no-->] ersetzen durch meinArray\<!--no-->[<!--no-->5\<!--no--><!--no-->]

MartinHeuser

Re: Perl im Browser

#9 Post by MartinHeuser »

Tjo.. Ich wollte jetzt eigendlich nicht den kompletten Code umbauen um ihn richtig im Forum anzeigen zu lassen. Wenn ihn jemand haben will, kann ich ihn auch als Mail verschicken.

Mich interessiert eher, warum der Browser die Ausgabe mit einem Bad Header quittiert. An der Laufzeit bis zum Fehler im Browser sehe ich, daß das Script auf jeden Fall ausgeführt wird. Nur an der Ausgabe hapert es.

Gruß Martin

Post Reply