Cà plante à la ligne "headers = line.split(' = ')[1][1:-1].split()".
Et çà veut juste dire que "line" n'est pas de la forme rule = 'log icmp 10.0.0.1 any -> 10.0.0.2 80' ou que votre fichier ne contient pas que des lignes sous cette forme là.
- W
Cà plante à la ligne "headers = line.split(' = ')[1][1:-1].split()".
Et çà veut juste dire que "line" n'est pas de la forme rule = 'log icmp 10.0.0.1 any -> 10.0.0.2 80' ou que votre fichier ne contient pas que des lignes sous cette forme là.
- W
Mais mon fichier contient que ça : rule = 'alert tcp 10.0.0.1 any -> 10.0.0.3 80'
rule = 'log icmp 10.0.0.1 any -> 10.0.0.2 80'
rule = 'alert udp 10.0.0.1 any -> 10.0.0.2 21'
rule = 'alert udp 10.0.0.0/30 any -> 10.0.0.4 21'
par contre si j’enlève la dernière ligne(rule = 'alert udp 10.0.0.0/30 any -> 10.0.0.4 21') de mon fichier et je change mon code :ça marche normal mais le problème c'est que mon fichier doit contenir aussi ce type de règle rule = 'alert udp 10.0.0.0/30 any -> 10.0.0.4 21' et cette expression ce n'est pour elle ('^rule\s*=\s*[\'\"](.+?)\s*[\'\"]\s*$' , Que dois je faire ? pour que mon programme puisse lire les deux types de règles ???
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 res = re.search('^rule\s*=\s*[\'\"](.+?)\s*[\'\"]\s*$', line) if res : #dictionnaire ,group: chercher par groupe header = res.group(1) #print (header) headers = header.split() #print(headers) rule = { 'action':headers[0], 'protocol':headers[1], 'srcaddresses':headers[2], 'srcports':headers[3], 'direction':headers[4], 'dstaddresses':headers[5], 'dstports':headers[6], }
Je ne vois pas d'instruction qui ressemble à headers = line.split(' = ')[1][1:-1].split() dans le dernier code que vous avez posté.
Ceci dit, là encore, vous pouvez lancer la console Python et vérifier par vous même:
que le problème n'est ni dans les règles analysées ni dans la regexp.
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 >>> data = '''rule = 'alert tcp 10.0.0.1 any -> 10.0.0.3 80' ... rule = 'log icmp 10.0.0.1 any -> 10.0.0.2 80' ... rule = 'alert udp 10.0.0.1 any -> 10.0.0.2 21' ... rule = 'alert udp 10.0.0.0/30 any -> 10.0.0.4 21'""" >>> for line in data.splitlines(): ... print (line.split(' = ')[1][1:-1].split()) ... ['alert', 'tcp', '10.0.0.1', 'any', '->', '10.0.0.3', '80'] ['log', 'icmp', '10.0.0.1', 'any', '->', '10.0.0.2', '80'] ['alert', 'udp', '10.0.0.1', 'any', '->', '10.0.0.2', '21'] ['alert', 'udp', '10.0.0.0/30', 'any', '->', '10.0.0.4', '21'] >>> for line in data.splitlines(): ... print(re.search('^rule\s*=\s*[\'\"](.+?)\s*[\'\"]\s*$', line).group(1).s plit()) ... ['alert', 'tcp', '10.0.0.1', 'any', '->', '10.0.0.3', '80'] ['log', 'icmp', '10.0.0.1', 'any', '->', '10.0.0.2', '80'] ['alert', 'udp', '10.0.0.1', 'any', '->', '10.0.0.2', '21'] ['alert', 'udp', '10.0.0.0/30', 'any', '->', '10.0.0.4', '21'] >>>
- W
Ah Oui c'est bon ça marche maintenant , je vous remercie pour votre patience et de m'avoir aidé merci merci beaucoup
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager