Python脚本--Apache配置文件

通过python脚本来修改apache的配置文件:

该脚本可以解析apache配置文件,找到VirtualHost部分,替换DocumentRoot。

#!/usr/bin/python

from cStringIO import StringIO
import re

vhost_start = re.compile(r'<VirtualHost\s+(.*?)>')
vhost_end = re.compile(r'</VirtualHost>')
docroot_re = re.compile(r'(DocumentRoot\s+)(\S+)')

def replace_docroot(conf_string, vhost, new_docroot):
  '''yield new lines of an httpd.conf file where docroot lines matching
      the specified vhost are replaced with the new_docroot
  '''
  conf_file = StringIO(conf_string)
  in_vhost = False
  curr_vhost = None
  for line in conf_file:
    vhost_start_match = vhost_start.search(line)
    if vhost_start_match:
      curr_vhost = vhost_start_match.groups()[0]
      in_vhost = True
    if in_vhost and (curr_vhost == vhost):
      docroot_match = docroot_re.search(line)
      if docroot_match:
        sub_line = docroot_re.sub(r'\1%s' % new_docroot, line)
        line = sub_line
      vhost_end_match = vhost_end.search(line)
      if vhost_end_match:
        in_vhost = False
      yield line
        
if __name__ == '__main__':
  import sys
  conf_file = sys.argv[1]
  vhost = sys.argv[2]
  docroot = sys.argv[3]
  conf_string = open(conf_file).read()
  for line in replace_docroot(conf_string, vhost, docroot):
    print line,


你可能感兴趣的:(apache,python,httpd.conf)