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
Perl im Browser
Re: Perl im Browser
Hi!
Keine Header angegeben? Also "Content-type: text/html" usw.?
Cheers,
Wolfgang
Keine Header angegeben? Also "Content-type: text/html" usw.?
Cheers,
Wolfgang
Re: Perl im Browser
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
Worauf soll ich denn da achten?
Gruß Martin
Re: Perl im Browser
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
.
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
.
Re: Perl im Browser
Hmmm.. Da fehlen Zeichen... Lasst Euch von fehlenden Zeichen @input<font size="3"> ist z.B. nur @input nicht irritieren.
Gruß Martin
Gruß Martin
Re: Perl im Browser
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
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
Re: Perl im Browser
@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-->]
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-->]
Re: Perl im Browser
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
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