разбить httpd на более мелкие файлы

809
Warnaud

Привет мне нужно извлечь каждый 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, чтобы сделать вручную; (

Большое спасибо за ответы

2

2 ответа на вопрос

1
Dennis Williamson

Попробуйте это:

#!/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 
Потрясающие!! Большое большое спасибо! Warnaud 13 лет назад 0
Я немного подправил скрипт, поэтому он добавляет также Listen XXXX в начале:. #! / usr / bin / gawk -f BEGIN Warnaud 13 лет назад 0
@Warnaud: Ой, прости, я забыл добавить эту часть. Я отредактирую свой ответ. Не забудьте пометить его как принятый, если он удовлетворяет вашим требованиям. Dennis Williamson 13 лет назад 0
Я бы очень хотел, потому что это именно то, что я искал, но ... как это сделать :(? Сайт отличный, но синтаксис и подобные опции довольно незаметны. Warnaud 13 лет назад 0
Я узнал ;-) Еще раз спасибо Warnaud 13 лет назад 0
0
Rich Homolka

Хотя вы не упомянули об этом, это похоже на apache httpd.conf. Хотя я рекомендую существующий ответ, который разделяет файлы, есть другой вариант.

Если сервер apache построен mod_perlи если вы знаете (или хотите изучать) Perl, помните, что он mod_perlсвязан со всеми аспектами apache, включая config. Вы можете написать конфигурацию в разделе Perl и сгенерировать конфигурацию VirtualHost в самом Perl.