Вывести основную информацию по виртуальным хостам apache

Потребовалось внести изменения в большое количество виртуальных хостов, нашел удобный скрипт для вывода информации(https://gist.github.com/jakubjedelsky/3142806):

#!/usr/bin/env python
#
# simle'n'stupid vhost "parser"
#
# Usage: ./vhosts-reader.py FILE
#     FILE is a apache config file
import re
import sys
import os.path

if len(sys.argv) != 2:
    sys.exit('Usage: %s FILE' % sys.argv[0])

FILE = sys.argv[1]

if not os.path.isfile(FILE):
    sys.exit('Unknown file %s' % FILE)

f = open(FILE, 'r')
data_all = f.readlines()
f.close()

data = filter( lambda i: re.search('^((?!#).)*$', i), data_all)

ID = 0
enable = False

result = {}
vhost = []
while len(data) > 0:
    out = data.pop(0)

    # start of VirtualHost
    if "', '')
        vhost.append(ip)
        vhost.append(port)
        enable = True
        continue

    if "" in out:
        result[ID] = vhost
        ID+=1
        enable = False
        vhost = []
        continue
            
    if enable:
        vhost.append(out)
        continue

for i in result:
    # result[i][0] is an IP
    # result[i][1] is a port
    # another list items are lines in vhost, grep them all
    for line in result[i]:
        if "ServerName" in line:
            servername = line.split()[1]
            continue
        if "DocumentRoot" in line:
            documentroot = line.split()[1]
            continue
        if "ServerAlias" in line:
            serveralias = ','.join(str(n) for n in line.split()[1:])
            continue
        if "SuexecUserGroup" in line:
            user = line.split()[1]

    print "%s:%s:%s:%s" % (user, servername, serveralias, documentroot)

Скрипт выведет пользователя, имя сервера, алиасы и корневую директорию виртуального хоста.
я поправил вывод в конце на print documentroot. Например мне нужно вывести все директории содержащие директорию с именем example.com:

python2.7 myscript.py /etc/httd/httpd.conf |grep 'example.com$'

Тем самым я получу все директории, заканчивающиеся на example.com и могу делать дальнейшие операции.

Кстати пока не забыл я пользуюсь IP калькулятором для поиска маски подсети которая являются основым методом бесклассовой маршрутизации

Понравилась статья? Поделиться с друзьями: