Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
DIARIO_MANAGER
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
DIARIO_MANAGER
Commits
09d02b6d
Commit
09d02b6d
authored
Jan 26, 2018
by
Philippe Valfok
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Scripts para criação automática de domínios finalizados
parent
64ffcbf2
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
166 additions
and
9 deletions
+166
-9
scripts/add_domain.py
scripts/add_domain.py
+158
-1
scripts/run_add_domain.py
scripts/run_add_domain.py
+8
-8
No files found.
scripts/add_domain.py
View file @
09d02b6d
#!/usr/bin/python2
#!/usr/bin/python2
# -*- coding: utf-8 -*-
print
"olha eu aqui!"
import
sys
\ No newline at end of file
import
os
import
logging
from
fabric.tasks
import
execute
from
fabric.api
import
env
,
run
from
fabric.operations
import
put
,
get
from
datetime
import
datetime
PONTO_DB
=
"""$TTL 14400
__domain_name__.pege.com.br. 86400 IN SOA ns1.infatec.net.br. abuse.infatec.net.br. (
__date__01 ;Serial Number
3600 ;refresh
7200 ;retry
1209600 ;expire
86400 ;minimum
)
__domain_name__.pege.com.br. 86400 IN NS ns1.infatec.net.br.
__domain_name__.pege.com.br. 86400 IN NS ns2.infatec.net.br.
__domain_name__.pege.com.br. 14400 IN A __droplet_ip__
__domain_name__.pege.com.br. 14400 IN A __droplet_ip__
mail 14400 IN CNAME __domain_name__.pege.com.br.
www 14400 IN CNAME __domain_name__.pege.com.br.
ftp 14400 IN A __droplet_ip__
cpanel 14400 IN A __droplet_ip__
webdisk 14400 IN A __droplet_ip__
cpcalendars 14400 IN A 209.126.103.85
cpcontacts 14400 IN A 209.126.103.85
whm 14400 IN A 209.126.103.85
webmail 14400 IN A 209.126.103.85
"""
ZONE
=
'};
\n\n\n
zone "__domain_name__.pege.com.br" {
\n\t
type '
+
\
'master;
\n\t
file "/var/named/__file_db_name__";
\n
};
\n\n
};'
logging
.
getLogger
(
'paramiko.transport'
)
.
addHandler
(
logging
.
StreamHandler
()
)
env
.
hosts
=
[
'209.126.103.85:38652'
]
env
.
user
=
'root'
def
altera_named
(
domain_name
,
file_db_name
):
local_named_path
=
os
.
path
.
join
(
os
.
getcwd
(),
'named.conf'
)
named_file
=
open
(
local_named_path
,
'r'
)
named_content
=
named_file
.
read
()
named_file
.
close
()
if
file_db_name
in
named_content
:
raise
Exception
(
'Domínio já existe no servidor DNS!'
)
text_to_replace
=
"};
\n\n
};"
named_content
=
named_content
.
replace
(
text_to_replace
,
ZONE
.
replace
(
'__domain_name__'
,
domain_name
)
.
replace
(
'__file_db_name__'
,
file_db_name
)
)
named_file
=
open
(
local_named_path
,
'w'
)
named_file
.
write
(
named_content
)
named_file
.
close
()
return
local_named_path
def
cria_arquivo_db
(
file_db_name
):
file_path
=
os
.
path
.
join
(
os
.
getcwd
(),
file_db_name
)
file_db
=
open
(
file_path
,
'w'
)
file_db
.
write
(
PONTO_DB
.
replace
(
'__domain_name__'
,
domain_name
)
.
replace
(
'__droplet_ip__'
,
droplet_ip
)
.
replace
(
'__date__'
,
datetime
.
now
()
.
strftime
(
"
%
Y
%
m
%
d"
))
)
file_db
.
close
()
return
file_path
def
exec_add_domain
(
domain_name
,
droplet_ip
):
server_named_path
=
"/etc/named.conf"
path_db
=
'/var/named/'
file_db_name
=
"
%
s.pege.com.br.db"
%
domain_name
# Pegando arquivo named.conf do servidor
result
=
get
(
server_named_path
,
os
.
path
.
join
(
os
.
getcwd
(),
'named.conf'
))
if
result
.
failed
:
raise
Exception
(
'Erro ao tentar copiar arquivo named.conf do servidor.'
)
# Alterando arquivo named.conf
local_named_path
=
altera_named
(
domain_name
,
file_db_name
)
# Criando arquivo .db
file_db_path
=
cria_arquivo_db
(
file_db_name
)
# Enviando arquivo .db para o servidor
result
=
put
(
local_path
=
file_db_path
,
remote_path
=
path_db
)
if
result
.
failed
:
raise
Exception
(
'Erro ao adicionar arquivo "
%
s" ao servidor DNS.'
%
file_db_name
)
os
.
remove
(
file_db_path
)
# Realizando backup do arquivo named.conf no servidor
result
=
run
(
"mv {} {}.{}"
.
format
(
server_named_path
,
server_named_path
,
datetime
.
now
()
.
strftime
(
"
%
Y
%
m
%
d
%
S"
)
)
)
if
result
.
failed
:
raise
Exception
(
'Erro ao realizar backup do arquivo named.conf no servidor.'
)
# Enviando arquivo novo named.conf para o servidor
result
=
put
(
local_path
=
local_named_path
,
remote_path
=
server_named_path
)
if
result
.
failed
:
raise
Exception
(
'Erro ao enviar novo arquivo named.conf para o servidor.'
)
os
.
remove
(
local_named_path
)
# Definindo dono e grupo do arquivo named.conf e reiniciando serviço
result
=
run
(
"chown named:named {} && chown named:named {} && rndc reload"
.
format
(
os
.
path
.
join
(
path_db
,
file_db_name
),
server_named_path
)
)
if
result
.
failed
:
raise
Exception
(
'Erro ao realizar chown no arquivo e/ou reiniciar o serviço.'
)
if
__name__
==
'__main__'
:
try
:
domain_name
=
sys
.
argv
[
1
]
droplet_ip
=
sys
.
argv
[
2
]
execute
(
exec_add_domain
,
domain_name
,
droplet_ip
)
print
'Sucesso ao executar script para criação do domínio "{}".'
.
format
(
domain_name
)
except
Exception
as
err
:
msg
=
"Erro ao executar comando! (
%
s)"
%
err
print
msg
scripts/run_add_domain.py
View file @
09d02b6d
...
@@ -5,7 +5,7 @@ import os
...
@@ -5,7 +5,7 @@ import os
import
sys
import
sys
import
logging
import
logging
from
fabric.api
import
env
,
run
,
settings
,
show
,
hide
from
fabric.api
import
env
,
run
from
fabric.tasks
import
execute
from
fabric.tasks
import
execute
...
@@ -22,19 +22,19 @@ env.user = os.environ.get('MANAGER_HOST_USER')
...
@@ -22,19 +22,19 @@ env.user = os.environ.get('MANAGER_HOST_USER')
env
.
password
=
os
.
environ
.
get
(
'MANAGER_HOST_PASSWORD'
)
env
.
password
=
os
.
environ
.
get
(
'MANAGER_HOST_PASSWORD'
)
def
exec_add_domain
(
domain_name
):
def
exec_add_domain
(
domain_name
,
droplet_ip
):
script_path
=
"django_apps/DIARIO_MANAGER/scripts/add_domain.py"
script_path
=
"django_apps/DIARIO_MANAGER/scripts/add_domain.py"
with
settings
(
hide
(
'everything'
),
show
(
'running'
)):
result
=
run
(
"chmod +x
%
s &&
%
s
%
s
%
s"
%
(
script_path
,
script_path
,
domain_name
,
droplet_ip
))
result
=
run
(
"chmod +x
%
s &&
%
s
%
s"
%
(
script_path
,
script_path
,
domain_name
))
if
result
.
failed
:
if
result
.
failed
:
print
"Erro ao executar script de criação de domínio. (
%
s)"
%
result
.
command
return
"Erro ao executar script de criação de domínio. (
%
s)"
%
result
.
command
print
"Criação de domínio executada com sucesso."
return
"Erro ao executar script de criação de domínio"
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
try
:
try
:
domain_name
=
sys
.
argv
[
1
]
domain_name
=
sys
.
argv
[
1
]
execute
(
exec_add_domain
,
domain_name
)
droplet_ip
=
sys
.
argv
[
2
]
return
execute
(
exec_add_domain
,
domain_name
,
droplet_ip
)
except
Exception
as
err
:
except
Exception
as
err
:
msg
=
"Erro ao executar comando! (
%
s)"
%
err
msg
=
"Erro ao executar comando! (
%
s)"
%
err
print
msg
print
msg
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment