рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдЕрдкрд╛рдЪреЗ рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рдмрдирд╛рдирд╛

рдореИрдВ рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧрд╛ рд╣реБрдЖ рд╣реВрдВ рдФрд░ рдбреЗрдмрд┐рдпрди рдХреЗ рддрд╣рдд рд╕реНрдерд╛рдиреАрдп рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдпреЛрдЧ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рдХрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╣рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдХрд▓рдореЛрдВ рдХреЗ рд╕рд╛рде рдЖрднрд╛рд╕реА рдореЗрдЬрдмрд╛рди рдмрдирд╛рдирд╛ рдерд╛, рд╣рдореЗрдВ рдЦреБрдж рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЖрд╡рд╢реНрдпрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛, рдЬреЛ рдХрд┐ рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ рдФрд░ рдХреЗрд╡рд▓ 2 рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдПрдХ рдЖрднрд╛рд╕реА рд╣реЛрд╕реНрдЯ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛ рджреЗрдВред рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХрдВрд╕реЛрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрдХрд┐рди рд╕рднреА рд╡рд┐рдХрд▓реНрдк рдЬреЛ рдореБрдЭреЗ рдорд┐рд▓реЗ рдЙрдирдореЗрдВ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдереА, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рд╕рднреА рдиреЗ рдПрдХ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд┐рд╕реЗ рдореИрдВ рдмрд╕ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП:
- рдЕрдкрдиреА рдЦреБрдж рдХреА рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рд╡рд╣ рд╕рдм рдХреБрдЫ рдмрдирд╛рдпрд╛ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП;
- рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ рдХреЛ рд╡рд┐рдХрд╛рд╕ рднрд╛рд╖рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛, рдЬреИрд╕реЗ рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрд╕ рдкрд░ рд▓рд┐рдЦрдирд╛ рд╕реАрдЦ рд░рд╣рд╛ рд╣реВрдВред

рдЕрджреНрдпрддрди (09/08/11 20:25): рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдСрдкреНрдЯрдкрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, .write рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдо рдХрд░ рджрд┐рдпрд╛ред

рдирддреАрдЬрддрди, рдореБрдЭреЗ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреЛрд╖рдЬрдирдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдорд┐рд▓реАред

#!/usr/bin/env python # -*- coding: utf-8 -*- ### #        ### import os, sys, re, shutil, string, pwd, grp, stat from optparse import OptionParser #   ,  ,    # ..          #     if os.getuid()!=0: sys.exit ("\033[31m     !\033[0m"); #   sname=os.path.basename(__file__); def main(): parser = OptionParser(usage="usage: %prog [options] [add|drop] domain", version="%prog 1.0") parser.add_option("-d", "--dir_site", default="/home/alen/domains/", metavar="/home/alen/domains/", help=u"  ."); parser.add_option("-a", "--apache_bin", default="/etc/init.d/apache2", metavar="/etc/init.d/apache2", help=u" apache  ."); parser.add_option("-c", "--apache_config_site", default="/etc/apache2/sites-enabled/", metavar="/etc/apache2/sites-enabled/", help=u" sites-enabled  apache   virtualhost."); parser.add_option("-t", "--host", default="/etc/hosts", metavar="/etc/hosts", help=u"  hosts     ."); parser.add_option("-i", "--ip", default="127.0.0.1", metavar="127.0.0.1", help=u"IP  "); parser.add_option("-e", "--a2ensite", default="a2ensite", metavar="a2ensite", help=u"enable an apache2 site / virtual host"); (options, args) = parser.parse_args(); if len(args)!=2 or not args[0] in {"add":1,"drop":2}: parser.error(sname+" -h"); return {"options":options,"args":args}; conf=main(); options=conf['options']; #          #        : dir_site stat_info = os.stat(options.dir_site); options.uid = stat_info.st_uid; options.gid = stat_info.st_gid; options.user = pwd.getpwuid(options.uid)[0]; options.group = grp.getgrgid(options.gid)[0]; #      def remove_string(filename, string): rst = []; with open(filename) as fd: t = fd.read(); for line in t.splitlines(): if line != string: rst.append(line); with open(filename, 'w') as fd: fd.write('\n'.join(rst)) fd.write('\n') def apache_site_config(name): file_name=options.apache_config_site+name; dir_site=options.dir_site+name; f = open(file_name,"w+"); print >> f, '<VirtualHost *:80>\n\n'+\ 'DocumentRoot '+ dir_site +'/www\n'+\ 'ServerAlias www.'+name+'\n'+\ 'ServerName '+name+'\n'+\ 'ScriptAlias /cgi-bin/ '+dir_site+'/www/cgi-bin/\n\n'+\ '<Directory "'+dir_site+'/www">\n'+\ '\tAllowOverride All\n'+\ '\tOrder Deny,Allow\n'+\ '\tAllow from all\n'+\ '\tOptions All\n'+\ '</Directory>\n\n'+\ '<Directory "'+dir_site+'/www/cgi-bin/">\n'+\ '\tAllowOverride None\n'+\ '\tOptions +ExecCGI -MultiViews +SymLinksIfOwnerMatch\n'+\ '\tOrder allow,deny\n'+\ '\tAllow from all\n'+\ '</Directory>\n\n'+\ '<IfModule dir_module>\n'+\ '\tDirectoryIndex index.php index.html index.cgi\n'+\ '</IfModule>\n\n'+\ '#SuexecUserGroup '+options.user+' '+options.group+'\n'+\ 'ErrorLog \"'+ dir_site +'/log/error.log\"\n'+\ 'CustomLog \"'+ dir_site +'/log/access.log\" combined\n'+\ 'LogLevel warn\n\n'+\ '</VirtualHost>'; f.close(); #    def add_domain(name): dir_site=options.dir_site+name; if os.path.exists(dir_site): sys.exit(" "+name+"      "+dir_site); elif os.path.exists(options.apache_config_site+name): sys.exit(options.apache_config_site+name+" -   !"); else: os.makedirs(dir_site+"/"); os.makedirs(dir_site+"/www/"); os.makedirs(dir_site+"/www/cgi-bin/"); os.makedirs(dir_site+"/log/"); f = open(dir_site+"/www/index.php","a+"); f.write('<?php\nphpinfo();'); f.close(); f = open(dir_site+"/www/cgi-bin/index.cgi","a+"); print >> f,'#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\n'+\ 'import cgitb\ncgitb.enable()\n\n'+\ 'print "Content-Type: text/plain;charset=utf-8"\n'+\ 'print\n\nprint "Hello World!"'; f.close(); os.system("chown -R "+options.user+":"+options.group+" "+dir_site); os.chmod(dir_site+"/www/cgi-bin/index.cgi", 0755); apache_site_config(name); f = open(options.host,"a+"); f.write("\n"+options.ip+"\t"+name+"\twww."+name); f.close(); f = open(dir_site+"/www/.htaccess","a+"); f.write("AddDefaultCharset UTF-8"); f.close(); os.system(options.a2ensite+" "+name); os.system(options.apache_bin+" restart"); sys.exit("\033[31m http://"+name+"  \033[0m"); pass; #    def drop_domain(name): dir_site=options.dir_site+name; if os.path.exists(dir_site): shutil.rmtree(dir_site); if os.path.exists(options.apache_config_site+name): os.unlink(options.apache_config_site+name); remove_string(options.host, options.ip+"\t"+name+"\twww."+name); os.system(options.apache_bin+" restart"); sys.exit("\033[31m   "+name+" !\033[0m"); pass; if conf["args"][0] in {"add":1,"drop":2} and \ re.compile('^[-\w.]{3,}$').match(conf["args"][1]): if conf["args"][0]=='add': add_domain(conf["args"][1]); else: drop_domain(conf["args"][1]); else: sys.exit("\033[31m \"" + conf["args"][0] + "\"  !\033[0m"); 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЛрдЯ

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд░реВрдЯ `рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдбреЛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред

рдорд┐рдиреА рдирд┐рд░реНрджреЗрд╢, рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛-
рдЙрдкрдпреЛрдЧ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ [рд╡рд┐рдХрд▓реНрдк] [рдЬреЛрдбрд╝реЗрдВ | рдбреНрд░реЙрдк] рдбреЛрдореЗрди
рд╡рд┐рдХрд▓реНрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдмрджрд▓рддреЗ рд╣реИрдВред

рдбреЛрдореЗрди рдЬреЛрдбрд╝рддреЗ рдпрд╛ рдирд┐рдХрд╛рд▓рддреЗ рд╕рдордп:
- рдбреЛрдореЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреА рдлрд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- dir_site рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ;
- apache_config_site рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдкрд╛рдЪреЗ рдХреЗ рд▓рд┐рдП virtualhost рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╡рд╛рд▓реА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдИ рдЧрдИ рд╣реИред

рдкрд▓ рдХреЛ рдЬрдмреНрдд рдХрд░рдирд╛

рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрд╛рдпрдерди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдпрд╣ рдореЗрд░рд╛ рдкрд╣рд▓рд╛ рдЕрдиреБрднрд╡ рд╣реИ, рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдкрдиреА рдЧрд▓рддрд┐рдпреЛрдВ рдпрд╛ рдЧрд▓рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдореИрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдХрд┐рдХ- рдЧрдзрд╛ рдХрд┐рдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛)ред

Source: https://habr.com/ru/post/In127996/


All Articles