Rechercher une IP dans une Log

Résolu
gunbol Messages postés 52 Statut Membre -  
lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour,

j'ai un fichier de log (listener oracle) qui contient des adresses IP. Je souhaiterais lister toutes les adresses IP et uniquement les adresses IP contenues dans ce fichier Log.

J'ai essayé en Awk, mais les adresses IP peuvent s'écrire à plusieurs endroits dans une même ligne.

Comment on fait avec une expression régulière du genre [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} pour lister que les adresses IP.

Merci d'avance pour votre aide.

Cordialement,

Gunther
Configuration: Windows XP
Internet Explorer 6.0

10 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Récupérer une adresse IP
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    Il faut juste faire un grep (pour virer toutes les lignes sans IP) et un sed avec les options /ng (pour traiter les lignes comprenant plusieurs IP de sorte à les répartir sur différentes lignes (changer une IP en une IP suivi d'un passage à la ligne). Enfin avec un autre sed, tu peux virer tout ce qui est autour de chaque IP dans une ligne. Je te laisse chercher je n'ai pas trop le temps dans l'immédiat.

    Bonne chance
    0
  3. gunbol Messages postés 52 Statut Membre 4
     
    Hello,

    Merci pour l'info, je voulais éviter de passer par l'étape sed, en me disant (ou en espérant) qu'il y ait une commande magique, genre match qui fasse l'affaire.

    @+

    Gunther
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    Non je pense pas que tu pourras faire plus simple :p
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Et l'option -o de grep ?
    -o, --only-matching 
    N'afficher que la partie d'une ligne qui correspond au MOTIF. 
    --
    106485010510997108
    0
  7. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    Je dis : bingo lami20j. Je propose un bon vieux :
    egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" pouet.txt

    Bonne chance
    0
  8. gunbol Messages postés 52 Statut Membre 4
     
    Tout d'abord, merci à tous pour vos réponses.

    Toutefois, je suis sur un Solaris 9, et /usr/xpg4/bin/egrep ne connait pas l'option -o.

    Si vous avez d'autres idées, je prends aussi ;)

    @+

    Gunther
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    Je pourrai te donner une solution Perl.
    0
  10. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 942
     
    Essaye en remplaçant egrep -o par grep -oE.
    0
  11. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Re,
    perl -ne 'print $1 if /((?=\d{1,3}\.){3}\d{1,3})/g' fichier.txt

    Je n'ai pas testé ;-)
    0