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

Shell et commandes GNU Discussion :

identifier les paramètres de requêtes GET


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 36
    Par défaut identifier les paramètres de requêtes GET
    Bonjour,
    je cherche à identifier TOUS les paramètres d'appel GET dans des fichiers de logs
    exemple:
    Fichier log1>
    nianiania GET /site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX etc...

    Donc le but est de répertorier tous les arguments qui sont passés lors de requêtes à un site donné dans un fichier de log donné
    le résultat dans l'exemple ci dessus serait:
    arg1
    arg2
    arg3
    date
    info
    etc..

    j'essaie un truc du style (qui ne marche pas bien sur)=>

    grep site1 log1 | sed -e "s/.*&([^=]+)=/\1/g" | sort -u

    Le problème est que je ne sais pas à l'avance combien il y a de paramètres transmis...

    Quelqu'un a une idée ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 36
    Par défaut
    j'ai presque trouvé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -r -n -i site1 log1| grep -Eo "[&?][^=]+=" | sed -e "s/[&?]\([^=]+\)=/\1/g" | sort -u
    mais apparait toujours dans la liste les arguments encadrés de &? et = (le sed ne fonctionne pas)

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ sed 's/.*?//;s/&/\n/g;s/=/\n/g' <<<"/site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX"
    arg1
    XXXX
    arg2
    XXXXX
    arg3
    XXXXX
    date
    XXXXX
    info
    XXXX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ sed 's/.*?//;s/&/\n/g;s/=/\n/g' <<<"/site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX" |sed '2~2d'
    arg1
    arg2
    arg3
    date
    info
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ sed 's/.*?//;s/=[^&]*/\n/g;s/&//g;s/\n$//' <<<"/site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX"
    arg1
    arg2
    arg3
    date
    info

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 36
    Par défaut
    la troisième commande sed marche nikel merci

  5. #5
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 335
    Par défaut
    Bonjour,
    Une solution via grep (supportant le perl regex engine):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ grep -Po '(?<=[?&])[^=]*(?==)' <<<'nianiania GET /site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX' 
    arg1
    arg2
    arg3
    date
    info

  6. #6
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bon, ben, va pour la solution awk:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ awk -F'[=&?]' '{for (i=2;i<=NF;i=i+2) print $i;}' <<<"/site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX"
    arg1
    arg2
    arg3
    date
    info

  7. #7
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    ou pire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ awk 'BEGIN{RS="[=&?]";} NR%2==0{print $0;}' <<<"/site1/branch1?arg1=XXXX&arg2=XXXXX&arg3=XXXXX&date=XXXXX&info=XXXX"
    arg1
    arg2
    arg3
    date
    info

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Identifier les paramètre d'une fonction de transfert
    Par Épanouissement dans le forum Signal
    Réponses: 2
    Dernier message: 06/03/2015, 13h34
  2. Réponses: 3
    Dernier message: 27/08/2014, 16h33
  3. Identifier les paramètres réseau d'un équipements ?
    Par thuglife dans le forum Applications
    Réponses: 4
    Dernier message: 21/10/2013, 13h28
  4. Réponses: 1
    Dernier message: 12/06/2013, 14h26
  5. Réponses: 3
    Dernier message: 04/05/2006, 13h00

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