Привет я должен извлечь каждый VirtualHosts из своего httpd.conf для разделения файлов для более легкого управления.
Исходный httpd.conf.
..
<VirtualHost *:XXXX>
SuexecUserGroup user1 groupX
...
</VirtualHost>
<VirtualHost *:XXXY>
SuexecUserGroup user2 groupY
...
</VirtualHost>
<VirtualHost *:XXYY>
SuexecUserGroup user3 groupZ
...
</VirtualHost>
...
И я хотел бы иметь файлы как: - XXXX_user1.conf, содержащий:
Listen XXXX
<VirtualHost *:XXXX>
SuexecUserGroup user1 groupX
...
</VirtualHost>
- XXXY_user2.conf, содержащий:
Listen XXXY
<VirtualHost *:XXXY>
SuexecUserGroup user2 groupY
...
</VirtualHost>
Звуки немного усложнили, но я имею как 500, чтобы сделать вручную ;(
Большое спасибо за ответы
Дайте этому попытку:
#!/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
}
Сохраните его в названном файле, возможно, "httpdsplit" и сделайте:
$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf
Хотя Вы не упоминали это, это похоже на апачский httpd.conf. Хотя я рекомендую существующий ответ, который разделяет файлы, существует другая опция.
Если апачский сервер создается с mod_perl
и если Вы знаете (или готовы учиться), Perl, помните это mod_perl
связывает со всеми аспектами апача, включая конфигурацию. Вы могли записать конфигурацию со строкой файла конфигурации Perl и генерировать конфигурацию VirtualHost в самом жемчуге.