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,


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章