IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

expressions régulières à appliquer.


Sujet :

Python

  1. #41
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    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
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  2. #42
    Membre à l'essai
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    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 :
    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],
     
                        }
    ç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 ???

  3. #43
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    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:
    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']
    >>>
    que le problème n'est ni dans les règles analysées ni dans la regexp.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #44
    Membre à l'essai
    Femme Profil pro
    étudiante
    Inscrit en
    Janvier 2016
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Janvier 2016
    Messages : 54
    Points : 21
    Points
    21
    Par défaut
    Ah Oui c'est bon ça marche maintenant , je vous remercie pour votre patience et de m'avoir aidé merci merci beaucoup

Discussions similaires

  1. [RegEx] Comment appliquer une condition à une expression régulière ?
    Par Maxiglider dans le forum Langage
    Réponses: 2
    Dernier message: 01/12/2015, 20h46
  2. Expression réguliére
    Par Mad_Max dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 16/09/2003, 18h17
  3. [expression régulière] mon cerveau fait des noeuds..
    Par nawac dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 27/05/2003, 10h06
  4. Expressions réguliéres
    Par Tooms dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2002, 18h42
  5. Réponses: 5
    Dernier message: 11/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo