Netgate SG-1000 microFirewall

Author Topic: Cron - squid logs - Cat et script  (Read 136 times)

0 Members and 1 Guest are viewing this topic.

Offline tom072

  • Newbie
  • *
  • Posts: 15
  • Karma: +0/-0
    • View Profile
Cron - squid logs - Cat et script
« on: December 26, 2017, 09:15:14 am »
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

Offline tom072

  • Newbie
  • *
  • Posts: 15
  • Karma: +0/-0
    • View Profile
Re: Cron - squid logs - Cat et script
« Reply #1 on: December 26, 2017, 11:34:10 am »
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

Offline jdh

  • Hero Member
  • *****
  • Posts: 1773
  • Karma: +45/-12
    • View Profile
Re: Cron - squid logs - Cat et script
« Reply #2 on: December 27, 2017, 05:59:47 am »
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}'
« Last Edit: December 27, 2017, 06:50:19 am by jdh »
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.)