Hola, necesito extraer cada VirtualHost de mi httpd.conf en archivos separados para facilitar la administración.
httpd.conf original.
..
<VirtualHost *:XXXX>
SuexecUserGroup user1 groupX
...
</VirtualHost>
<VirtualHost *:XXXY>
SuexecUserGroup user2 groupY
...
</VirtualHost>
<VirtualHost *:XXYY>
SuexecUserGroup user3 groupZ
...
</VirtualHost>
...
Y me gustaría tener archivos como: - XXXX_user1.conf que contenga:
Listen XXXX
<VirtualHost *:XXXX>
SuexecUserGroup user1 groupX
...
</VirtualHost>
- XXXY_user2.conf que contiene:
Listen XXXY
<VirtualHost *:XXXY>
SuexecUserGroup user2 groupY
...
</VirtualHost>
Suena un poco complicado pero tengo como 500 que hacer a mano ;(
Muchas gracias por las respuestas
Respuesta1
Prueba esto:
#!/usr/bin/gawk -f
BEGIN {
RS = "</VirtualHost>\n"
}
{
prefix = gensub("*:([^>]*)>", "\\1", "1", $2)
filename = prefix "_" $4 ".conf"
print "Listen " prefix "\n" $0 "\n" RS > filename
}
Guárdelo en un archivo llamado, quizás, "httpdsplit" y haga:
$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf
Respuesta2
Aunque no lo mencionaste, esto se parece a Apache httpd.conf. Aunque recomiendo la respuesta existente que divide los archivos, existe otra opción.
Siel servidor apache está construido con mod_perl
ysiSi conoces (o estás dispuesto a aprender) Perl, recuerda que mod_perl
se vincula con todos los aspectos de Apache, incluida la configuración. Puede escribir la configuración con una estrofa de Perl y generar la configuración de VirtualHost dentro del propio Perl.