OVH Cloud OVH Cloud

tri du nombre d'occurences dans une liste.

2 réponses
Avatar
Kevin
bonjour,

j'essaie de trier un log volumineux.
La trace est un log d'iptables sur systeme linux. Les lignes sont
du genre:
Nov 3 16:20:58 slackware kernel: requete vers named IN=eth1 OUT=
MAC=00:b0:d0:16:aa:ff:00:80:ae:e3:6f:97:08:00 SRC=210.224.186.4
DST=69.35.20.230 LEN=71 TOS=0x00 PREC=0x00 TTL=50 ID=0 DF PROTO=UDP
SPT=61528 DPT=53 LEN=51
Nov 3 16:20:58 slackware kernel: requete vers named IN=eth1 OUT=
MAC=00:b0:d0:16:aa:ff:00:80:ae:e3:6f:97:08:00 SRC=212.162.1.194
DST=69.35.20.230 LEN=71 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=UDP
SPT=60978 DPT=53 LEN=51
Nov 3 16:20:58 slackware kernel: requete vers named IN=eth1 OUT=
MAC=00:b0:d0:16:aa:ff:00:80:ae:e3:6f:97:08:00 SRC=216.73.84.10
DST=69.35.20.230 LEN=71

Je cherche a trier selon l'argument SRC=
Je connais un peu sort, uniq, mais la, je ne vois pas trop comment faire
j'ai un peu de mal. sort a une option +POS1 -POS2, mais je ne
comprends pas trop son action. Je me trompe d'outil peut etre?

Merci
--
Kevin
Tu disais que quoi pouvais faire tomber le reseau?
-+- Les 100 choses que vous n'aimez pas entendre de la part du sysadmin -+-

2 réponses

Avatar
Ian
Kevin DENIS wrote:

bonjour,

j'essaie de trier un log volumineux.
La trace est un log d'iptables sur systeme linux. Les lignes sont
du genre:
Nov 3 16:20:58 slackware kernel: requete vers named IN=eth1 OUT=
MAC:b0:d0:16:aa:ff:00:80:ae:e3:6f:97:08:00 SRC!0.224.186.4
DSTi.35.20.230 LENq TOS=0x00 PREC=0x00 TTLP ID=0 DF PROTO=UDP
SPTa528 DPTS LENQ
Nov 3 16:20:58 slackware kernel: requete vers named IN=eth1 OUT=
MAC:b0:d0:16:aa:ff:00:80:ae:e3:6f:97:08:00 SRC!2.162.1.194
DSTi.35.20.230 LENq TOS=0x00 PREC=0x00 TTLU ID=0 DF PROTO=UDP
SPT`978 DPTS LENQ
Nov 3 16:20:58 slackware kernel: requete vers named IN=eth1 OUT=
MAC:b0:d0:16:aa:ff:00:80:ae:e3:6f:97:08:00 SRC!6.73.84.10
DSTi.35.20.230 LENq

Je cherche a trier selon l'argument SRC > Je connais un peu sort, uniq, mais la, je ne vois pas trop comment faire
j'ai un peu de mal. sort a une option +POS1 -POS2, mais je ne
comprends pas trop son action. Je me trompe d'outil peut etre?

Merci


Bonjour,

Toutes tes lignes semblent avoir le même format. Si ton problème est
de compter le nombre d'occurences d'une adresse dans le champ "SRC=", je
ferais çà avec Awk.

cordialement,

Ian.

Avatar
Antoine Bellot
Kevin DENIS a écrit:
bonjour,

j'essaie de trier un log volumineux.
Je me trompe d'outil peut etre?


Ce que tu cherches à faire peut se faire avec de très nombreux outils
capables de traiter des fichiers ligne par ligne, mais l'immense
majorité d'entre eux utilisent les "expressions régulières/rationnelles"
("regexp", "regular expressions") pour trier certaines lignes parmi
d'autres, en une ligne ou une partie d'une ligne est "conforme"
("matches") à un "modèle" ("pattern", "pattern matching" en anglais pour
Google/man). D'ailleurs, une fois qu'on sait trier des logs, trier le
mail ou les news sans outil dédié devient facile.

Typiquement, perl, sed et awk sont les outils les plus utilisés pour ce
que tu cherches à faire. Il existe un livre utile chez O'Reilly dénommé
"Sed & Awk" consacré au sujet, dont une version téléchargeable en ligne
existait à une certaine époque je ne sais plus où, dont le chapitre 3
est entièrement consacré aux expressions régulières et à leur syntaxe.

Un petit tutorial sur la syntaxe des expressions régulières est là :

http://www.cs.rpi.edu/~hollingd/introunix/lectures/regexp.pdf

Il y a peut être mieux ailleurs.

à mon humble avis, une fois les principes généraux des expressions
régulières comprises, apprendre awk et l'appliquer rapidement à un cas
concret est simple et rapide. Sinon, tu peux éventuellement passer
directement à des outils plus complexes au goût de ta chapelle : Perl,
Python, Ruby, et tant d'autres.

Bon courage.

--
Antoine Bellot
Non, je ne suis pas monomaniaque avec les regexps.