您好,我需要從 httpd.conf 中提取每個 VirtualHosts 以單獨的檔案以便於管理。
原始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>
- XXXX_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 的各個方面綁定,包括配置。您可以使用 Perl 節編寫配置並在 perl 本身內產生 VirtualHost 配置。