IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Problème d'extraction de données dans log


Sujet :

Linux

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut Problème d'extraction de données dans log
    Bonjour à tous !!

    J'ai un problème d'extraction de données, j'aimerai pouvoir repérer les adresses MAC qui s'identifient en double sur 2 switches différents (les 2 dernières lignes dans l'extrait du log). On peut commencer par faire un tri par rapport à l'adresse MAC, enlever les doublons, mais ensuite je bloque


    Voici un extrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Mon Nov *3 20:20:59 2008 : Error: WARNING: Malformed RADIUS packet from host 127.0.0.1: too short (received 1 < Batnimum 20)
    Mon Nov *3 20:21:00 2008 : Auth: Login OK: [001e68-7284bd/<CHAP-Password>] (from client SwitchR5-1 port 20 cli 00-1e-68-72-84-bd)
    Mon Nov *3 20:21:04 2008 : Auth: Login OK: [0016d4-f51efc/<CHAP-Password>] (from client SwitchBat-3 port 19 cli 00-16-d4-f5-1e-fc)
    Mon Nov *3 20:21:05 2008 : Auth: Login OK: [001636-b106b6/<CHAP-Password>] (from client SwitchBat-3 port 10 cli 00-16-36-b1-06-b6)
    Mon Nov *3 20:21:05 2008 : Auth: Login OK: [001d09-5474fb/<CHAP-Password>] (from client SwitchBat-1 port 37 cli 00-1d-09-54-74-fb)
    Mon Nov *3 20:21:13 2008 : Auth: Login OK: [001b24-1b1c5d/<CHAP-Password>] (from client SwitchBat-3 port 15 cli 00-1b-24-1b-1c-5d)
    Mon Nov *3 20:21:15 2008 : Auth: Login OK: [0013d4-858b4e/<CHAP-Password>] (from client SwitchBat-2 port 24 cli 00-13-d4-85-8b-4e)
    Mon Nov *3 20:21:18 2008 : Error: WARNING: Malformed RADIUS packet from host 127.0.0.1: too short (received 1 < Batnimum 20)
    Mon Nov *3 20:21:28 2008 : Auth: Login OK: [000d5e-b4d350/<CHAP-Password>] (from client SwitchR5-1 port 25 cli 00-0d-5e-b4-d3-50)
    Mon Nov *3 20:21:29 2008 : Auth: Login OK: [00e04c-662205/<CHAP-Password>] (from client SwitchBat-1 port 25 cli 00-e0-4c-66-22-05)
    Mon Nov *3 20:21:32 2008 : Auth: Login OK: [00c09f-c1bba0/<CHAP-Password>] (from client SwitchBat-3 port 46 cli 00-c0-9f-c1-bb-a0)
    Mon Nov *3 20:21:32 2008 : Auth: Login OK: [001fc6-76372f/<CHAP-Password>] (from client SwitchR5-0 port 9 cli 00-1f-c6-76-37-2f)
    Mon Nov *3 20:21:33 2008 : Auth: Login OK: [001a80-1e795e/<CHAP-Password>] (from client SwitchBat-2 port 36 cli 00-1a-80-1e-79-5e)
    Mon Nov *3 20:21:37 2008 : Auth: Login OK: [001c7e-163eab/<CHAP-Password>] (from client SwitchBat-3 port 1 cli 00-1c-7e-16-3e-ab)
    Mon Nov *3 20:21:37 2008 : Error: WARNING: Malformed RADIUS packet from host 127.0.0.1: too short (received 1 < Batnimum 20)
    Mon Nov *3 20:21:39 2008 : Auth: Login OK: [001bfc-3ddfe3/<CHAP-Password>] (from client SwitchBat-0 port 48 cli 00-1b-fc-3d-df-e3)
    Mon Nov *3 20:21:48 2008 : Auth: Login OK: [001b24-e8f4ca/<CHAP-Password>] (from client SwitchBat-2 port 29 cli 00-1b-24-e8-f4-ca)
    Mon Nov *3 20:21:54 2008 : Auth: Login OK: [001b38-dd563e/<CHAP-Password>] (from client SwitchR5-1 port 7 cli 00-1b-38-dd-56-3e)
    Mon Nov *3 20:21:56 2008 : Error: WARNING: Malformed RADIUS packet from host 127.0.0.1: too short (received 1 < Batnimum 20)
    Mon Nov *3 20:22:01 2008 : Auth: Login OK: [0019b9-88709d/<CHAP-Password>] (from client SwitchBat-3 port 6 cli 00-19-b9-88-70-9d)
    Mon Nov *3 20:22:01 2008 : Auth: Login OK: [0019b9-88709d/<CHAP-Password>] (from client SwitchR5-0 port 15 cli 00-19-b9-88-70-9d)
    Vous avez une idée ?

    Merci d'avance !
    RedVivi

  2. #2
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    Tu peux faire comme tu dis, mais moi je ferais plutôt un petit script Perl qui créé un hash indexé par l'adresse mac. A chaque ligne tu teste si l'adresse est déjà dans le hash.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Merci !
    J'ai donc essayé cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -v "$(sort -k 2 logfile| uniq -1 -u)" logfile | sort -k 2
    qui fonctionne très bien sur une liste comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mac1 aaa
    mac2 bbb
    mac2 aaa
    mac3 aaa
    mac4 ccc
    mac5 bbb
    et affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mac1 aaa
    mac2 aaa
    mac3 aaa
    mac2 bbb
    mac5 bbb
    C'est donc ce que je recherche ! Mais quand je veux l'appliquer sur mon fichier de log voici ce que j'ai comme erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -bash: /bin/grep: Liste d'arguments trop longue
    Où est le souci ?

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par redvivi Voir le message
    Merci !
    J'ai donc essayé cette commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -v "$(sort -k 2 logfile| uniq -1 -u)" logfile | sort -k 2
    qui fonctionne très bien sur une liste comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    mac1 aaa
    mac2 bbb
    mac2 aaa
    mac3 aaa
    mac4 ccc
    mac5 bbb
    et affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    mac1 aaa
    mac2 aaa
    mac3 aaa
    mac2 bbb
    mac5 bbb
    C'est donc ce que je recherche ! Mais quand je veux l'appliquer sur mon fichier de log voici ce que j'ai comme erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -bash: /bin/grep: Liste d'arguments trop longue
    Où est le souci ?
    Ben il te le dit. L'info que reçoit le grep (info générée par le sous-processus "(sort -k 2 logfile| uniq -1 -u)" est trop grosse et le grep ne peut pas la traiter

    Tu peux utiliser l'option "-u" de sort qui remplace l'uniq. Tu gagnes un processus mais ça ne change rien au problème.

    Ce qu'il faut, c'est faire une première liste de tes adresses (comme tu fais ici) mais faire traiter cette liste par le grep adresse par adresse. Comme ça, le grep ne traite qu'une info à la fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/bin/sh
    sort -k 2 logfile| uniq -1 -u |while read adr
    do
        grep -v "$adr" logfile
    done |sort -k 2

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 179
    Points : 45
    Points
    45
    Par défaut
    Ok merci !

    Au oins le problème de la taille est résolu. Par contre j'en ai un autre maintenant: le script qui fonctionne très bien dans mon premier exemple aec une liste simpliste ne fonctionne pas avec les fichiers de log, on dirait que le tri ne se fait pas, si je change les paramètres du sort rien n'y fait

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 735
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 735
    Points : 31 060
    Points
    31 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par redvivi Voir le message
    Par contre j'en ai un autre maintenant: le script qui fonctionne très bien dans mon premier exemple aec une liste simpliste ne fonctionne pas avec les fichiers de log, on dirait que le tri ne se fait pas, si je change les paramètres du sort rien n'y fait
    Ben j'ai été étonné du "-k2" qui ne correspond pas, dans le fichier initial, à la position de l'adresse mac. Tu as fait un essai avec un fichier de test qui ne contenait que 2 colonnes => pas bon => t'aurais dû prendre un petit extrait de 5 ou 6 lignes du vrai fichier de log => t'aurais eu le bon format d'entrée.
    Mais t'as un autre problème => ton fichier de log n'est pas formaté pareil sur chaque ligne. Parfois t'as des mots en plus, etc.

    Donc faut te créer un fichier de travail bien formaté. A vue de nez, je pense que la commande suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "from" fichier_log |cut -c"(" -f2 |cut -c")" -f1
    te donnera un fichier où chaque ligne sera sous la forme
    (from client SwitchBat-2 port 24 cli 00-13-d4-85-8b-4e)
    Là, tu pourras bosser.

Discussions similaires

  1. extraction de données dans excel
    Par massilia80 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/10/2006, 13h14
  2. extraction des données dans une table Access
    Par moabomotal dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 12h17
  3. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 20h07
  4. [MySQL] Problème d'insertion de données dans table d'associations
    Par Yukhaa dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 07/02/2006, 18h10
  5. Extraction de donnés dans un fichier XML
    Par ANISSS dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 27/01/2006, 14h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo