Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Cron - squid logs - Cat et script

    Français
    2
    3
    515
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      tom072
      last edited by

      Bonjour,
      J'ai ce comportement surprenant :

      • J'ai fait un petit script pour convertir les dates en version humaine des logs de Squid:

      cat /root/tests-cron/log.txt | perl -p -e 's/^([0-9]*)/"[".localtime($1)."]"/e' > /root/tests-cron/result.txt

      • Cela marche très bien lorsque je le lance à la main: toutes les dates de mes logs sont transformées sans problème dans le fichier result.txt

      • Lorsque je lance le script en tâche planifié via Cron, le fichier result.txt est VIDE !

      Quelqu'un a une idée ou a déjà rencontré le problème ?  ou connait une autre méthode de conversion ?
      Thanks
      Gérard

      1 Reply Last reply Reply Quote 0
      • T
        tom072
        last edited by

        En fait, j'ai trouvé ! je post la ligne si cela peut aider :

        /usr/local/bin/perl -pe 's/^\d+.\d+/localtime $&/e' access.log >result.txt

        1 Reply Last reply Reply Quote 0
        • J
          jdh
          last edited by

          Bien évidemment, je n'utilise pas de proxy sur le firewall (puisque ce n'est pas du tout sa place …)

          Squid utilise le même format pour access.log depuis ... très longtemps
          Le premier chanp est la date au format epoch, c'est bien connu, comme l'astuce perl indiquée dans le site de Squid (autrefois dans la FAQ).

          L'ensemble des outils de visualisation/stats (sarg, lightsquid, webalizer, ...) de ce fichier sont conçus avec ce champ 1 sous ce format.

          Sauf pour la visualisation en ligne de commande, je ne vois aucune utilité à convertir le fichier (et encore moins à le réaliser par cron, quelle hérésie sur un firewall).
          (pfSense utilisant php, il eut bien plus logique de faire appel à php et non perl !)
          Il est plus utile de disposer d'une commande pour le faire en pipant un cat, grep ou tail -f.

          Mes proxies sont sous Debian, comme j'y ajoute 'awk' (gawk), L'outil de manipulation de fichier texte (avec un grand L), donc
          cat /var/log/squid/access.log | gawk '{$1 = strftime("%F %T",$1) "." substr(($1-int($1)) "00",3,3); print}'

          Albert EINSTEIN : Si vous ne pouvez pas l'exprimer simplement, c'est que vous ne le comprenez pas assez bien. (If you can’t explain it simply, you don’t understand it well enough.)

          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.