Привет, мне нужно извлечь каждый 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 вручную ;(
Большое спасибо за ответы
решение1
Попробуйте это:
#!/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
решение2
Хотя вы не упомянули об этом, это похоже на apache httpd.conf. Хотя я рекомендую существующий ответ, который разделяет файлы, есть и другой вариант.
Еслисервер Apache создан с использованием mod_perl
иесливы знаете (или хотите изучить) Perl, помните, что он mod_perl
связывается со всеми аспектами apache, включая config. Вы можете написать config с помощью Perl stanza и сгенерировать VirtualHost config в самом perl.