我厌倦了在Apache中修改DocumentRoot所需的所有步骤。我试图用下面的Python脚本来简化这个过程。。。在
#!/usr/bin/python
import sys, re
if len(sys.argv) == 2:
f = open('/tmp/apachecdr', 'w')
f.write(open('/etc/apache2/httpd.conf').read())
f = open('/tmp/apachecdr', 'r')
r = re.sub('DocumentRoot "(.*?)"',
'DocumentRoot "' + sys.argv[1] + '"',
f.read())
f = open('/etc/apache2/httpd.conf', 'w')
f.write(r)
else:
print "Please supply the new DocumentRoot path."
我将其保存为/usr/bin/apachecdr,这样我就可以简单地打开shell和“sudo apachecdr/new/documentroot/path”,然后用apachectl重新启动。我的问题是你会怎么写这个?在
这是我第一次发表关于堆栈溢出的文章(我是Python新手),所以请让我知道这是否是一个不够具体的问题。在
你做了大量的档案工作却没有什么好处。为什么要编写/tmp/apachecdr,然后立即再次读取它?如果你在复制httpd.conf作为备份,shutil模块提供复制文件的功能:
谢谢你们的回答。奈德,我正希望你能这么说。我这样做的原因很简单,因为我不知道更好。谢谢你提供你的代码,这正是我要找的。在
顺便说一句,发生错误的原因是第8行的“BACKUP”和“HTTPD_CONF”是颠倒的。换言之,换个角度”shutil.copyfile文件(备份,HTTPD_CONF)“到”shutil.copyfile文件(HTTPD_CONF,BACKUP)”内德脚本的第8行。在
再次感谢各位!这是一个伟大的第一次经验张贴在这个网站上。在
一般来说,Python程序员更喜欢显式的而不是隐式的(参见http://www.python.org/dev/peps/pep-0020/)。 考虑到这一点,你可能需要重写这一行
收件人:
^{pr2}$另一个建议是增加一些错误检查。例如,检查文件/etc/apache2/httpd.conf存在。在
通常情况下,在打开的行周围使用try/except,但是如果要使用组合的read和write命令,可以使用操作系统统计为了检查。在
示例
相关问题 更多 >
编程相关推荐