2009-12-29 4 views
0

Je vais mieux expliquer ma situation avec un exemple. Considérant un fichier httpd.conf dans lequel j'ai besoin de changer la racine du document. Donc d'abord j'ai besoin de trouver le ServerName puis changer la racine du document, donc je crois ici j'ai besoin de deux regexp mais je ne sais pas comment le faire? Est-ce que quelqu'un peut m'aider? Ou dois-je juste trouver le ServerName et faire une note? du numéro de ligne puis continuer à trouver le DocumentRoot en utilisant un script? Merci.Trouver une séquence avec une expression régulière puis trouver une seconde suivante ou quelques lignes

+0

DocumentRoot est-il toujours après ServerName? La syntaxe permet de spécifier DocumentRoot et ServerName dans n'importe quel ordre tant qu'ils se trouvent dans le même sblock VirtualHost. –

+0

Oui, vous avez raison, mais dans mon cas, le ServerName vient toujours en premier. – mike

Répondre

0

Je ne suis pas sûr, mais peut-être quelque chose comme ça va marcher pour vous.

cat /etc/apache2/http.conf | sed 's/.*ServerName=.*/ServerName=YourNewLocation/' > tmp 
mv tmp /etc/apache2/http.conf 
+0

Désolé, je n'ai pas lu Votre question avec attention ... Ma réponse ne va pas aider – kokosing

0

Je ne sais pas pourquoi vous devez rechercher ServerName d'abord, mais voici comment vous pouvez changer documentroot

awk '/^DocumentRoot/{$0="DocumentRoot /new/root" } {print}' /path/httpd.conf > temp 
mv temp /path/httpd.conf 

Ou si vous faites usage de la valeur ServerName pour créer votre nouvelle racine,

awk '$1~/ServerName/{servername=$2} 
/^DocumentRoot/{ 
$0="DocumentRoot "servername # create your new root here. 
} 
{print} 
' /path/httpd.conf > temp 
mv temp /path/httpd.conf 
+0

Votre version va changer tous les DocumentRoot présents dans le fichier de configuration. C'est la raison pour laquelle je dois trouver l'entrée d'un hôte virtuel en utilisant le nom du serveur et la modification de son DocumentRoot. Merci pour votre réponse. – mike

Questions connexes