Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/11/2006, 17h36   #1
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 142
Points : 37
Points : 37
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 :

Citation:
<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 :
Citation:
#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.
loukili81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 17h44   #2
Modérateur
 
Avatar de ggnore
 
Inscription : juillet 2004
Messages : 2 246
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : juillet 2004
Messages : 2 246
Points : 1 903
Points : 1 903
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
Citation:
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.
ggnore est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 17h57   #3
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 142
Points : 37
Points : 37
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 :

Citation:
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.
loukili81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 13h27   #4
Nouveau Membre du Club
 
Inscription : janvier 2006
Messages : 142
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 142
Points : 37
Points : 37
je viens de trouver une piste, mais c'est pa encore fini.

j'ai écrit les commandes suivante :

Citation:
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 :
Citation:
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
loukili81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h30.


 
 
 
 
Partenaires

Hébergement Web