Autor Zpráva
hp
Profil *
Kdyz na serveru (Ubuntu 8.04, boa webserver) spoustim prikaz cat /var/log/squid/access.log|taille_categorie_squid.pl. Vystup vypada nasledovne:
root@server:/usr/local/bin# cat /var/log/squid/access.log|taille_categorie_squid.pl 
Taille totale : 7793 Ko		Nb total : 868 

mp3	: 0 Ko 0 Urls	POURCENTAGE : 0.0% en taille et 0.0% en nombre
pirate	: 0 Ko 0 Urls	POURCENTAGE : 0.0% en taille et 0.0% en nombre
hack	: 0 Ko 0 Urls	POURCENTAGE : 0.0% en taille et 0.0% en nombre
porno	: 231 Ko 4 Urls	POURCENTAGE : 3.0% en taille et 0.5% en nombre
root@server:/usr/local/bin#

Problem nastane pri pouziti CGI, napsal jsem jednoduchy skript:
#!/bin/bash
echo 'Content-type: text/html'
echo 'HTTP/1.1 200 OK'
echo
echo '<HTML>'
echo '<BODY>'
echo '<PRE>'
cat /var/log/squid/access.log|taille_categorie_squid.pl
echo '</PRE>'
echo '</BODY>'
echo '</HTML>'

Pri pristupu z www prohlizece se zobrazi jen jeden radek:
Taille totale : 0 Ko		Nb total : 0 
. Nevite nekdo jak zobrazit vsechny radky?
bukaj
Profil
hp
Nevite nekdo jak zobrazit vsechny radky?
Ten perlovský skript (je to tenhle, že?), který používáš, má v sobě neošetřené případy, kdy je log prázdný. Po výpisu té první řádky totiž dojde na dělení nulou, což samozřejmě shodí skript, dokonce s chybovou hláškou. Ta ale jde do chybového výstupu (stderr), a boa zřejmě čte pouze standardní výstup (stdout). Tento patch by to měl spravit:
--- taille_categorie_squid.pl   2008-07-07 18:20:32.000000000 +0200
+++ taille_categorie_squid.pl   2008-07-07 17:28:52.000000000 +0200
@@ -86,7 +86,7 @@
 printf ("Taille totale : %d Ko\t\tNb total : %d \n\n",$taille_totale,$nb_total);
 foreach (@types_url)
        {
-       $pourcent_type{$_}=$taille_type{$_}*100/$taille_totale;
-       $pourcent_nb_type{$_}=$nb_type{$_}*100/$nb_total;
+       $pourcent_type{$_}=$taille_type{$_}*100/ ($taille_totale ? $taille_totale : 1);
+       $pourcent_nb_type{$_}=$nb_type{$_}*100/ ($nb_total ? $nb_total : 1);
        printf ("$_\t: %d Ko %d Urls\tPOURCENTAGE : %.1f%% en taille et %.1f%% en nombre\n",$taille_type{$_},$nb_type{$_},$pourcent_type{$_},$pourcent_n b_type{$_});
        }

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0