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

2

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

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

Warnaud
источник

Ответы:

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
Dennis Williamson
источник
Я немного подправил скрипт, поэтому он добавляет также Listen XXXX в начале:. #! / usr / bin / gawk -f BEGIN {RS = "& lt; / VirtualHost & gt; \ n"} {prefix = gensub (" : ([^ & GT;] ) & gt; "," \\ 1 "," 1 ", $ 2) filename = prefix" _ "$ 4" .conf "print" Listen "prefix $ 0" "RS & gt; filename}
Warnaud
@Warnaud: Ой, прости, я забыл добавить эту часть. Я отредактирую свой ответ. Не забудьте пометить его как принятый, если он удовлетворяет вашим требованиям.
Dennis Williamson
Я бы очень хотел, потому что это именно то, что я искал, но ... как это сделать :(? Сайт отличный, но синтаксис и такие опции довольно незаметны
Warnaud
0

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

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

Rich Homolka
источник