divide o httpd em arquivos menores

2

Oi eu preciso extrair cada VirtualHosts do meu httpd.conf para separar arquivos para facilitar o gerenciamento.

Original httpd.conf .

..
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>
<VirtualHost *:XXYY>
  SuexecUserGroup user3 groupZ
  ...
</VirtualHost>
...

Eu gostaria de ter arquivos como: - XXXX_user1.conf contendo:

Listen XXXX
<VirtualHost *:XXXX>
  SuexecUserGroup user1 groupX
  ...
</VirtualHost>

- XXXY_user2.conf contendo:

Listen XXXY
<VirtualHost *:XXXY>
  SuexecUserGroup user2 groupY
  ...
</VirtualHost>

Parece um pouco complicado, mas eu tenho 500 para fazer à mão; (

Muito obrigado pelas respostas

    
por Warnaud 05.10.2010 / 09:39

2 respostas

1

Experimente:

#!/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
}

Salve em um arquivo chamado, talvez, "httpdsplit" e faça:

$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf
    
por 05.10.2010 / 11:27
0

Embora você não tenha mencionado, isso parece o httpd.conf do apache. Embora eu recomende a resposta existente que divide os arquivos, existe outra opção.

Se o servidor apache for construído com mod_perl e se você souber (ou estiver disposto a aprender) Perl, lembre-se de que mod_perl se liga a todos os aspectos de apache, incluindo config. Você poderia escrever a configuração com uma estrofe Perl e gerar a configuração do VirtualHost dentro do próprio perl.

    
por 05.10.2010 / 16:42

Tags