我有一个看起来有点像这样的Apache虚拟主机:
<VirtualHost *:80>
ServerName aaaaaa.com
ServerAlias www.aaaaaa.com upload.aaaaaa.com publisher.aaaaaa.com
ServerAlias aaaaaa.no upload.aaaaaa.no www.aaaaaa.no publisher.aaaaaa.no
ServerAlias bbbbbb.no www.bbbbbb.no upload.bbbbbb.no publisher.bbbbbb.no
ServerAlias cccccc.live upload.cccccc.live www.cccccc.live publisher.cccccc.live
ServerAlias dddddd.com *.dddddd.com
ServerAlias aaaaaa.cccccc.live *.aaaaaa.cccccc.live
ServerAlias eeeeee.com *.eeeeee.com
ServerAlias ffffff.com *.ffffff.com
ServerAlias aaaaaa-com.bbbbbb.no
ServerAdmin [email protected]
ErrorLog /var/log/apache2/aaaaaa.com-error.log
CustomLog /var/log/apache2/aaaaaa.com-access.log combined
ServerSignature Off
<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>
DocumentRoot /var/www/html/aaaaaa.com/current/www/
<Directory /var/www/html/aaaaaa.com/current>
AllowOverride all
</Directory>
Alias /oc-publisher-framework /var/www/releases/oc-publisher-framework-www/
# Fake https to become on for Cloudflare special headers.
SetEnvIf X-Forwarded-Proto https HTTPS=on
SetEnvIf CF-Visitor {"scheme":"https"} HTTPS=on
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName aaaaaa.com
ServerAlias aaaaaa.no
ServerAlias www.aaaaaa.no
ServerAlias bbbbbb.no
ServerAlias www.bbbbbb.no
ServerAlias cccccc.live
ServerAlias www.cccccc.live publisher.cccccc.live
ServerAlias dddddd.com
ServerAlias www.dddddd.com
ServerAlias www.aaaaaa.com
ServerAlias gc-aaaaaa.aaaaaa.com
ServerAlias www.gc-aaaaaa.aaaaaa.com
ServerAlias aaaaaa.cccccc.live
ServerAlias www.aaaaaa.cccccc.live
ServerAlias eeeeee.com www.eeeeee.com
ServerAdmin [email protected]
ErrorLog /var/log/apache2/aaaaaa.com-error.log
CustomLog /var/log/apache2/aaaaaa.com-access.log combined
ServerSignature Off
<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>
DocumentRoot /var/www/html/aaaaaa.com/current/www/
<Directory /var/www/html/aaaaaa.com/current>
AllowOverride all
</Directory>
Alias /oc-publisher-framework /var/www/html/releases/oc-publisher-framework-www/
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/bbbbbb.no.crt
SSLCertificateKeyFile /etc/apache2/ssl/bbbbbb.no.key.txt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
BrowserMatch "MSIE [2-6]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>
</IfModule>
我想从此处提取唯一的域名和文档根目录,这样它会输出如下内容:
/var/www/html/aaaaaa.com/current/www/ - aaaaaa.com www.aaaaaa.com upload.aaaaaa.com publisher.aaaaaa.com aaaaaa.no upload.aaaaaa.no www.aaaaaa.no publisher.aaaaaa.no bbbbbb.no www.bbbbbb.no upload.bbbbbb.no publisher.bbbbbb.no ...
如何使用AWK,BASH或Python完成此操作?
您可以使用awk
:
awk '$1 ~ /^(ServerName|ServerAlias)/ {
for (i=2; i<=NF; i++)
hosts[$i]
}
$1 == "DocumentRoot" {
dr = $2
}
END {
printf "%s -", dr
for (i in hosts)
printf " %s", i
print ""
}' httpd.conf
/var/www/html/aaaaaa.com/current/www/ - www.aaaaaa.cccccc.live dddddd.com www.cccccc.live www.eeeeee.com *.ffffff.com upload.cccccc.live www.bbbbbb.no bbbbbb.no ffffff.com eeeeee.com upload.aaaaaa.no gc-aaaaaa.aaaaaa.com publisher.aaaaaa.no publisher.cccccc.live upload.aaaaaa.com www.aaaaaa.com aaaaaa-com.bbbbbb.no www.gc-aaaaaa.aaaaaa.com aaaaaa.cccccc.live www.aaaaaa.no aaaaaa.no publisher.aaaaaa.com aaaaaa.com www.dddddd.com *.eeeeee.com *.aaaaaa.cccccc.live *.dddddd.com cccccc.live upload.bbbbbb.no publisher.bbbbbb.no
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句