Hallo, ich muss jeden VirtualHost aus meiner httpd.conf in separate Dateien extrahieren, um die Verwaltung zu vereinfachen.
Ursprüngliche httpd.conf .
..
<VirtualHost *:XXXX>
SuexecUserGroup user1 groupX
...
</VirtualHost>
<VirtualHost *:XXXY>
SuexecUserGroup user2 groupY
...
</VirtualHost>
<VirtualHost *:XXYY>
SuexecUserGroup user3 groupZ
...
</VirtualHost>
...
Und ich hätte gerne Dateien wie: - XXXX_user1.conf mit folgendem Inhalt:
Listen XXXX
<VirtualHost *:XXXX>
SuexecUserGroup user1 groupX
...
</VirtualHost>
- XXXY_user2.conf enthält:
Listen XXXY
<VirtualHost *:XXXY>
SuexecUserGroup user2 groupY
...
</VirtualHost>
Klingt etwas kompliziert, aber ich muss ungefähr 500 von Hand machen ;(
Vielen Dank für Antworten
Antwort1
Probieren Sie Folgendes aus:
#!/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
}
Speichern Sie es in einer Datei mit dem Namen „httpdsplit“ und führen Sie Folgendes aus:
$ chmod u+x httpdsplit
$ ./httpdsplit httpd.conf
Antwort2
Obwohl Sie es nicht erwähnt haben, sieht dies wie Apache httpd.conf aus. Obwohl ich die vorhandene Antwort empfehle, die die Dateien aufteilt, gibt es eine andere Option.
Wennder Apache-Server ist mit mod_perl
undWennSie kennen (oder möchten Perl lernen), denken Sie daran, dass mod_perl
es mit allen Aspekten von Apache verknüpft ist, einschließlich der Konfiguration. Sie können die Konfiguration mit einer Perl-Strophe schreiben und die VirtualHost-Konfiguration in Perl selbst generieren.