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 :

Programme shell pour rechercher un ensemble de lignes dans un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 142
    Points : 73
    Points
    73
    Par défaut Programme shell pour rechercher un ensemble de lignes dans un fichier
    Bonjour tout le monde,

    j'ai créé une application web. l'accès à cette application se fait par authentification forte ( avec certificats client). l'administrateur du site peut autoriser ou restreindre l'accès à certains certificats client, et donc la reconfiguration du fichier httpd.conf d'apache est nécessaire et doit être gérée automatiquement.la détermination des certificats se fait à travers leur numéro de séquence (serial number)

    à l'origine, aucun certificat n'est autorisé, mon fichier httpd.conf contient donc une liste vide :

    <Directory chemin_mon_application>
    SSLExportClientCertificates
    SSLRequireSSL
    SSLVerifyClient require
    SSLVerifyDepth 5
    ErrorDocument 403 "SSL required
    #Liste des numéros de série des certificats autorisés
    #BEGIN List of serial numbers
    SSLRequire %{SSL_CLIENT_M_SERIAL} in {}
    #END List of serial numbers
    </Directory>


    je souhaite ecrire un programme shell qui me permetra de sélectionner le bloque :
    #BEGIN List of serial numbers
    SSLRequire %{SSL_CLIENT_M_SERIAL} in {}
    #END List of serial numbers
    et d'ajouter les numéro de séquence qui ont été sélectionnés par l'administrateur a la liste ( ex : SSLRequire %{SSL_CLIENT_M_SERIAL} in {00,01,03} )

    qu'elles sont les commandes qui me permettront de faire ceci please.

    merci d'avance et bon courage à tous.

  2. #2
    Modérateur
    Avatar de ggnore
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 472
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 472
    Points : 4 029
    Points
    4 029
    Par défaut
    Dans le désordre tu peux essayer :
    1. grep
    2. tail
    3. head
    4. awk
    5. sed


    pourquoi veux tu sélectionner cette section ? Tu ne veux que modifier la ligne
    SSLRequire %{SSL_CLIENT_M_SERIAL} in {}
    , non ? Donc pourquoi "sélectionner" les deux lignes qui l'entourent ?

  3. #3
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 142
    Points : 73
    Points
    73
    Par défaut
    en effet la ligne "SSLRequire %{SSL_CLIENT_M_SERIAL} in {} " peut être présente plus qu'une fois dans mon fichier httpd.conf, c'est pourquoi.

    j'ai trouvé ces commandes, mais je n'arrive pas à les combiner.
    par exemple je saurai récupérer le numéro de la ligne avec :

    grep -n "#BEGIN List of serial numbers " "httpd.conf"
    mais ma question c'est comment faire passer le résultat de grep à awk par exemple pour pouvoir sélectionner la ligne qui suit et faire les autre traitements ?

    merci à toi ggnore.

  4. #4
    Membre régulier
    Inscrit en
    Janvier 2006
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 142
    Points : 73
    Points
    73
    Par défaut
    je viens de trouver une piste, mais c'est pa encore fini.

    j'ai écrit les commandes suivante :

    cp httpd.conf httpd.conf.sav

    awk -v var="SSLRequire %{ SSL_CLIENT_M_SERIAL} in {}" ' { if ($0 ~ var) { $0="toto" } print $0 } ' httpd.conf > httpd.conf.tmp

    cp httpd.conf.tmp httpd.conf
    sachant que ma chaine recherchée se trouve dans un fichier temp et que je peux la récupérer par :
    head -1 mon_fichier_temp
    comment je peux améliorer ma commande awk quitte à faire passer le résultat de la fonction "head" à "var" au lieu de lui affecter la chaîne elle même ?

    quelqu'un pourrait m'aider ?

    merci d'avance. bonne journée à tous

Discussions similaires

  1. Recherche et recup de ligne dans un fichier
    Par jodan33 dans le forum Langage
    Réponses: 3
    Dernier message: 18/06/2013, 10h22
  2. méthode pour recherche sous-ensemble
    Par laureat dans le forum Mathématiques
    Réponses: 14
    Dernier message: 08/04/2012, 02h27
  3. Recherche dichotomique d'une ligne dans un fichier
    Par yarf dans le forum Général Java
    Réponses: 5
    Dernier message: 31/03/2008, 15h37

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