Forum Programmation.shell Comparaison de fichier - access.log de Squid

Posté par  .
Étiquettes : aucune
0
30
nov.
2005
Bonjour à tous
voici ce que je dois faire : comparer un fichier de log Squid à un fichier d'url porno blaclisté et genere un fichier html du style IP - DATE - SITE si une url visité est dans la blackliste.

Le fichier log de squid est de la forme:
194.167.45.242 - - [22/Nov/2005:11:41:31 +0100] "GET http://www.xxxporn.com/images/PageMenu/u p.gif HTTP/1.0" 304 212 TCP_IMS_HIT:NONE

Le fichier d'url porno blacklisté (10Mo, 60000 entrée):
xxxporn.com
sex.com
sexy.fr
...

Voila ce que j'ai pondu:

tail -n20 access.log | sed "s|.*http://\(www\.\)\?\([^/]*\).*|\2|" > lignes
while read ligne
do
grep ^$ligne$ domains.txt
done < lignes

Ca marche, mais le résultat n'est pas exploitable, car j'ai juste un resultat du type xxxporno.com
Or il me fauT IP - DATE - URL, est la je bloque...
Et pourquoi on ne peut pas faire un sed sur une variable? Du genre:
URL=`tail -n1 access.log`
sed "s|.*http://\(www\.\)\?\([^/]*\).*|\2|" $URL


Merci
  • # pour ?

    Posté par  . Évalué à 1.

    question con, mais dans quel contexte tu fais ça ?
    parce que je soutiens pas plus le porno que ça, mais si c'est pour du flicage en entreprise ... je passe mon tour ... :)
  • # rep

    Posté par  . Évalué à 1.

    Nos utilisateurs (étudiants) signe un charte de bonne conduite informatique. Les sites porno ne sont pas bloqués, mais ne doivent pas etre visité. Donc au lieu de regarder en live le log de squid, je dois faire ca pour sanctionner ceux qui abuse d'un réseau uniquement destiné à un caractere de recherche et de formation
    • [^] # Re: rep

      Posté par  . Évalué à 1.

      fiou, on s'engage sur un terrain éthique glissant ...
      Comme je n'ai pas tous les éléments de la situation, je ne juge pas les choix faits sur ton réseau. De mon expérience, j'ai plutôt tendance à croire que la responsabilité des citoyens/internautes/êtres humains est un denrée rare. Je pense que je préférerais filtrer les urls d'une blacklist plutôt que laisser la porte ouverte aux inévitables abus et faire de la répression ensuite. Mais d'autres paramètres sont à prendre en compte comme le nombre d'utilisateurs, leur compréhension du fonctionnement des réseaux, leur motivation à l'utilisation du réseau, le coût du filtrage en termes de performances, et autres critères pertinents.

      bon, une façon de faire dans la réponse de netsurfeur, donc ma réaction, c'est plus du coupage de cheveux en quatre qu'autre chose :-)

      je me suis super relu pour essayer de pas tomber dans le troll sur ces sujets délicats. J'espère que je me suis pas trop raté ... Dans le doute, je le redis: je ne juge pas les choix fait sur ton réseau. C'est plus une réflexion à voi^W clavier haut ;-)
      • [^] # Re: rep

        Posté par  . Évalué à 1.

        tiens, d'ailleurs, ça peut se faire tout simplement au niveau de la résolution de noms en redirigeant toutes les urls inopportune sur 127.0.0.1 ou autre
  • # Re: Comparaison de fichier - access.log de Squid

    Posté par  . Évalué à 2.

    Il suffit de mémoriser la ligne complète avant d'en extraire le nom de domaine:
    tail -n20 access.log | while read ligne
    do
            domaine=`echo $ligne | sed "s|.*http://\(www\.\)\?\([^/]*\).*|\2|"`
            if grep -q ^$domaine$ domains.txt
            then
                    echo $ligne | sed 's/HTTP.*$//'
            fi
    done
    
  • # grep -f

    Posté par  . Évalué à 1.

    Salut, j'ai peut être loupé une subtilité, mais
    grep -f domains.txt access.log (ou tail -20 access.log | grep -f domains.txt plus précisemment) ne suffit pas faire ce que tu cherches ?
  • # SARG

    Posté par  . Évalué à 2.

    pour jouer avec les logs de squid et ne pas se faire chier en reinventant la roue, mieux vaut utiliser sarg.
    On peut lire dans le man : -a [hostname|ip address] Limits report to records containing the specified hostname/ip address

    http://sarg.sourceforge.net/sarg.php
  • # squidguard le fait en direct live

    Posté par  (site web personnel) . Évalué à 1.

  • # Y a un truc qui s'appelle awk ....

    Posté par  . Évalué à 2.

    ... et qui te permet de faire ce genrre de choses facilement ...
    En plus si tyt'as plein de lognes a traiter, c'est beaucouop plus rapide que le shell.
    Sinon y a Perl aussi qui est tres prise pour ce genre de tache.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.