Bonjour,
Je viens chercher un peu d'aide car je souhaite mieux maitriser le module RE si possible de python (étant débutant) et mettre en forme un fichier selon le résultat
Premièrement j'ai un fichier contenant des lignes types:
Je souhaite en extraire le "login", qui ici sera définit comme étant entre le début de ligne et le premier séparateur ":" .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin halt:x:7:0:halt:/sbin:/sbin/halt uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
Ensuite le HOME "/var/spool/login" comprent entre les ":/" et ce, sur les entrées ne contenant que "nologin" en fin de lignes. Pour pimentés le tout je dois formater mon fichier sous forme de colonne bien alignés, les logins ne sont jamais de la même taille idem pour le path du home.
Le fichier de sortie se présente sous formatage de colonne tel que:
C'est la mon point le plus difficile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 login1 /home/toto/login1 login111111 /home/toto/login111111
Pour le module RE j'en suis à ciblé entre 2 types de balises faisant office de delimiteur, sur mon exemple, il me sortira le premier login de la premiere ligne "mail" sans tenir compte des lignes finissant par "nologin" ou non.
Mes codes actuel, après il me faudra l'ajouter dans une boucle AND pour ressortir le path:
Et pour le moment ma boucle for qui va chercher les lignes en nologin:
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
23
24
25
26 #!/usr/bin/python2.6 #-*- coding: utf-8 -*- import re begin_balise = '' end_balise = ':x' motif = begin_balise + '.*' + end_balise #construction de la recherche obj_fichier = open("/home/blanci/Desktop/passwd","r") #fichier a lire texte = obj_fichier.read() #lecture fichier obj_fichier.close() obj_regex = re.search(motif, texte) #recherche avec la construction dans le contenu du fichier if obj_regex is None: # si aucun retour print "Pas de resultat reconnaissable dans le fichier." else: # sinon j'ecris le login dans le fichier texte = obj_regex.group() texte = texte.replace(begin_balise, '') texte = texte.replace(end_balise, '') texte = texte.strip() print "Voici le resultat :",texte passwd_extract = open('/home/Bureau/passwd_extract.txt', "w") passwd_extract.write(texte) passwd_extract.close()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #!/usr/bin/python2.6 #-*- coding: utf-8 -* chaine = "nologin" # Texte à rechercher print "\n ======== les lignes recherches contiennent: ", chaine, "========\n" fichier = open("/home/blanci/Desktop/passwd","r") # fichier a lire for line in fichier: if chaine in line: print line.split(" ") #affichage des lignes nologin fichier.close()
Comme préciser au début je débute en python c'est pour ca que pour le moment j'ai 2 codes séparés, pour bien comprendre le fonctionnement de chaque étapes du module et de mes boucles pour les faire fonctionner ensembles par la suite.
Partager