Expression reguliere

tchabat Messages postés 25 Statut Membre -  
tchabat Messages postés 25 Statut Membre -
Bonjour, voici unexemple de texte
nom de l'utlisateur: toto domaine: village
je voudrais extraire le mot qui se trouve entre "nom de l'utilisateur" et "domaine"
A voir également:

11 réponses

vignemail1 Messages postés 1262 Statut Contributeur 259
 
tu veux l'extraire avec quel outil ? sed ? perl ? java ? autre(s) ? Car les expressions régulières, on en trouve dans pas mal d'outil.
0
tchabat
 
mysql fera l'affaire mais si tu as la reponse dans un autre langage il n'ya pas de probleme je me battrais à faire une translation
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

Exemple avec sed :
[tmpfs]$ echo $var
nom de l'utlisateur: toto domaine: village

[tmpfs]$ echo $var | sed -n 's/[^:]*: \([^ ]*\).*/\1/p'
toto

[tmpfs]$
;-))
0
tchabat
 
merci beaucoup pour ta participation mais je me suis mal exprimé je ne voudrais pas declarer voici un log par exemple qui se trouve dans le champ de la base de données:

security[failure] 529 AUTORITE NT\\SYSTEM Échec de l'ouverture de session : Raison : Nom d'utilisateur inconnu ou mot de passe incorrect Nom de l'utilisateur : Administrator Domaine : Type de session : 3 Processus d'ouv. de session : NtLmSsp Package d'authentification : NTLM Nom de station de travail : \\\\DSRVSUP003B05BA Nom de l'utilisateur appelant : - Domaine appelant : - ID de session de l'appelant : - ID de processus appelant : - Services en transit : - Adresse réseau source : 10.250.90.173 Port source : 0

je voudrais recuperer la chaine se trouvant entre Nom de l'utilisateur et Domaine et aussi recuperer l'adresse IP
0

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

Posez votre question
jipicy Messages postés 41342 Statut Modérateur 4 896
 
[tmpfs]$ cat fichier
security[failure] 529 AUTORITE NT\\SYSTEM Échec de l'ouverture de session : Raison : Nom d'utilisateur inconnu ou mot de passe incorrect Nom de l'utilisateur : Administrator Domaine : Type de session : 3 Processus d'ouv. de session : NtLmSsp Package d'authentification : NTLM Nom de station de travail : \\\\DSRVSUP003B05BA Nom de l'utilisateur appelant : - Domaine appelant : - ID de session de l'appelant : - ID de processus appelant : - Services en transit : - Adresse réseau source : 10.250.90.173 Port source : 0

[tmpfs]$ sed -n 's/.*utilisateur : \([^ ]*\).*réseau source : \([^ ]*\).*/\1 \2/p' fichier
Administrator 10.250.90.173

[tmpfs]$
;-))
0
tchabat Messages postés 25 Statut Membre 2
 
merci jipicy je teste et je te fait un feedback
0
tchabat Messages postés 25 Statut Membre 2
 
salut jipicy j'ai un souci avec ta commande je ne sais pas où je fait faute.
j'ai cree un fichier test.txt contenant les données du log j'ai fait un cat test.txt, puis la commande
sed -n 's/.*utilisateur : \([^ ]*\).*réseau source : \([^ ]*\).*/\1 \2/p' test.txt
mais j'ai aucun resultat. j'ai éffacé même le nom du fichier à la fin de la commande toujours rien bon je check encore
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Tu peux mettre ton fichier quelque part (cjoint par exemple) ou me l'envoyer si ça doit rester confidentiel (enfin si c'est possible et si tu le veux ou peux) ?
0
kilian Messages postés 8854 Statut Modérateur 1 526 > jipicy Messages postés 41342 Statut Modérateur
 
Le soucis c'est qu'il est sous windows en fait non?
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > kilian Messages postés 8854 Statut Modérateur
 
Ben avec une version de sed pour Win à ce moment là, donc je ne vois même pas ce que ça pourrait changer...
0
kilian Messages postés 8854 Statut Modérateur 1 526 > jipicy Messages postés 41342 Statut Modérateur
 
S'il en a installé une oui :-)
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > kilian Messages postés 8854 Statut Modérateur
 
Ben dans le cas contraire il aurait eu un message d'erreur, non ? (command not found)
0
vignemail1 Messages postés 1262 Statut Contributeur 259
 
Vu que c'est un log sous Windows, est-ce que tu lances la commande sed à partir de Windows ou Linux, car sed c'est une commande linux que tu peux trouver en téléchargement sur http://gnuwin32.sourceforge.net/packages/sed.htm
concernant la commande sed -n ....., elle semble bonne donc normalement tu devrait pouvoir avoir le bon résultat
0
tchabat Messages postés 25 Statut Membre 2
 
salut les gars je travaille dans une société en qualité d'agent de sécurité informatique et utilisons l'outil syslog-ng pour la centralisation des logs et ces logs sont centralises dans un ubuntu server et les logs proviennent des serveurs windows et linux et le test est effectué est sur un serveur ubuntu. j'ai testé le 1er script que tu as envoyé et ça marche nickel excepté le second(il prend un temps fou et ne m'affiche rien).
pour resumer j'ai une table nommée Logs constituée comme suit:
-host pour nom des servers
-facility
-datetime
-priority
-program
-sequence
-msg pour message(correspondant au texte envoyé)
donc je genere un rapport comportant le nom du serveur , celui qui genere l'echec/succes de connexion et l'adresse ip utilise les 2 derniers elements se trouvent dans le champs msg
je teste le script en local, puis j'essaierais de l'adapter au regexp Mysql
merci de votre comprehension
0
vignemail1 Messages postés 1262 Statut Contributeur 259
 
Si c'est pour stocker dans MySQL, syslog-ng en version pro permet déjà de stocker dans une table MySQL, tout comme la version standard en utilisant un pipe, je l'ai déjà testé et cela marche. Pour créer le rapport alors, il suffit d'utiliser PHP ou autres qui consultent la base de données. La technique du pipe, http://doc.ubuntu-fr.org/syslog-ng
0
tchabat Messages postés 25 Statut Membre 2
 
syslog-ng est dejà installer et parametrer ainsi que l'interface web je peux visualiser et je sors des rapports mais le pb est le champ message qui contient du texte avec des infos important pour le reporting tel ma demande ci-haut jipicy est sur la voie.
mysql utilise les regexp dont je ne suis pas un expert dessus et j'essaye de lire la doc por comprendre la signification de tout ces crochet, parenthese etc mais je bloque je sais pas où. je me bat
0