dividir httpd en archivos más pequeños

dividir httpd en archivos más pequeños

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_perlysiSi conoces (o estás dispuesto a aprender) Perl, recuerda que mod_perlse 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.

información relacionada