你好,我需要从我的 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>
- 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 的所有方面(包括配置)紧密相关。您可以使用 Perl 节编写配置,并在 perl 本身内生成 VirtualHost 配置。