Rechercher une IP dans une Log

Résolu/Fermé
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 - 27 mars 2009 à 10:19
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 1 avril 2009 à 15:12
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

10 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
27 mars 2009 à 10:23
Salut,

Récupérer une adresse IP
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
27 mars 2009 à 10:24
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
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 4
27 mars 2009 à 10:37
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
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
27 mars 2009 à 14:44
Non je pense pas que tu pourras faire plus simple :p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
27 mars 2009 à 14:50
Salut,

Et l'option -o de grep ?
-o, --only-matching 
N'afficher que la partie d'une ligne qui correspond au MOTIF. 
--
106485010510997108
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
27 mars 2009 à 18:33
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
gunbol Messages postés 47 Date d'inscription mercredi 19 septembre 2007 Statut Membre Dernière intervention 18 mars 2016 4
1 avril 2009 à 14:35
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
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
1 avril 2009 à 14:55
Salut,

Je pourrai te donner une solution Perl.
0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
1 avril 2009 à 15:00
Essaye en remplaçant egrep -o par grep -oE.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
1 avril 2009 à 15:12
Re,
perl -ne 'print $1 if /((?=\d{1,3}\.){3}\d{1,3})/g' fichier.txt

Je n'ai pas testé ;-)
0