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 ?
    Toutes les vertus des hommes se perdent dans l’intérêt comme les fleuves se perdent dans la mer.
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux

  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