# -*- coding: utf-8 -*-
import reimport osdef GetVhostList(file): with open(file, 'r') as f: page = f.read() reg = r'\n<VirtualHost \*:80>(.*?)</VirtualHost>' content = re.compile(reg,re.DOTALL) vhostlist = content.findall(page) return vhostlistdef GetDocumentRoot(vhost): reg_doc = r'\n\s+DocumentRoot (.*?)\n' content = re.compile(reg_doc,re.DOTALL) doc = content.findall(vhost)[0].strip() return docdef GetServerName(vhost): reg_servername = r'\n\s+ServerName (.*?)\n' content = re.compile(reg_servername,re.DOTALL) servername = content.findall(vhost)[0].strip() return servernamedef GetServerAlias(vhost): serveralias_list = []# reg_serveralias = r'\n\s+ServerAlias\s(.*?)\.com' reg_serveralias = r'\n\s+ServerAlias (.*?)\n' content = re.compile(reg_serveralias,re.DOTALL) serveralias = re.findall(content,vhost) serveralias_list.append(serveralias) return serveralias_listdef GetVhostKey(vhostlist): vhostkey_list = [] for str_vhost in vhostlist: dit = { 'DocumentRoot': GetDocumentRoot(str_vhost), 'ServerName': GetServerName(str_vhost),'ServerAlias': GetServerAlias(str_vhost)} vhostkey_list.append(dit) return vhostkey_listdef GetServernameDoc(vhostkey_list): server_document_list = [] for servername in vhostkey_list: dit_server = { 'DocumentRoot': servername['DocumentRoot'],'Server': servername['ServerName']} server_document_list.append(dit_server) if servername['ServerAlias']: for serveralias in servername['ServerAlias']: dit_serveralias = { 'DocumentRoot': servername['DocumentRoot'],'Server': serveralias} server_document_list.append(dit_serveralias) return server_document_list #def split_list_dit(mylist):# list_first = []# for l in mylist:# if l['Server'].count('.') == 2:# dit = {'DomainName': l['Server'].split('.',1)[0], 'Domain': l['Server'].split('.',1)[1], 'DocumentRoot': l['DocumentRoot']}# list_first.append(dit)# if l['Server'].count('.') == 1:# dit = {'DomainName': '', 'Domain': l['Server'], 'DocumentRoot': l['DocumentRoot']}# list_first.append(dit)# return list_first def main(): file = "/root/httpd.conf" mylist = GetVhostList(file) myvhostkey = GetVhostKey(mylist) print myvhostkey# server_list = GetServernameDoc(myvhostkey)# split_server_list = split_list_dit(server_list)# sort_domain = sorted(split_server_list, key=lambda l: l['Domain'])# for l in sort_domain:# print l['DomainName'] + '.' + l['Domain'],l['DocumentRoot']# print l['DocumentRoot']if __name__ == "__main__": main()