Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
jumpserver
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ops
jumpserver
Commits
59591c2a
Commit
59591c2a
authored
Dec 18, 2015
by
ibuler
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix install bug
parent
e452c6d7
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
155 additions
and
151 deletions
+155
-151
install.py
install/install.py
+146
-0
next.py
install/next.py
+9
-151
No files found.
install/install.py
View file @
59591c2a
...
@@ -5,6 +5,16 @@ import subprocess
...
@@ -5,6 +5,16 @@ import subprocess
import
time
import
time
import
os
import
os
import
sys
import
sys
import
smtplib
import
MySQLdb
from
smtplib
import
SMTP
,
SMTPAuthenticationError
,
SMTPConnectError
import
ConfigParser
import
socket
import
fcntl
import
struct
jms_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
sys
.
path
.
append
(
jms_dir
)
def
bash
(
cmd
):
def
bash
(
cmd
):
...
@@ -34,7 +44,91 @@ def color_print(msg, color='red', exits=False):
...
@@ -34,7 +44,91 @@ def color_print(msg, color='red', exits=False):
return
msg
return
msg
def
get_ip_addr
(
ifname
=
'eth0'
):
try
:
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
return
socket
.
inet_ntoa
(
fcntl
.
ioctl
(
s
.
fileno
(),
0x8915
,
struct
.
pack
(
'256s'
,
ifname
[:
15
])
)[
20
:
24
])
except
:
ips
=
os
.
popen
(
"LANG=C ifconfig | grep
\"
inet addr
\"
| grep -v
\"
127.0.0.1
\"
| awk -F
\"
:
\"
'{print $2}' | awk '{print $1}'"
)
.
readlines
()
if
len
(
ips
)
>
0
:
return
ips
[
0
]
return
''
class
PreSetup
(
object
):
class
PreSetup
(
object
):
def
__init__
(
self
):
self
.
db_host
=
'127.0.0.1'
self
.
db_port
=
3306
self
.
db_user
=
'jumpserver'
self
.
db_pass
=
'mysql234'
self
.
db
=
'jumpserver'
self
.
mail_host
=
'smtp.qq.com'
self
.
mail_port
=
25
self
.
mail_addr
=
'hello@jumpserver.org'
self
.
mail_pass
=
''
self
.
ip
=
''
def
write_conf
(
self
,
conf_file
=
os
.
path
.
join
(
jms_dir
,
'jumpserver.conf'
)):
color_print
(
'开始写入配置文件'
,
'green'
)
conf
=
ConfigParser
.
ConfigParser
()
conf
.
read
(
conf_file
)
conf
.
set
(
'base'
,
'url'
,
'http://
%
s'
%
self
.
ip
)
conf
.
set
(
'db'
,
'host'
,
self
.
db_host
)
conf
.
set
(
'db'
,
'port'
,
self
.
db_port
)
conf
.
set
(
'db'
,
'user'
,
self
.
db_user
)
conf
.
set
(
'db'
,
'pass'
,
self
.
db_pass
)
conf
.
set
(
'db'
,
'database'
,
self
.
db
)
conf
.
set
(
'websocket'
,
'web_socket_host'
,
'
%
s: 3000'
%
self
.
ip
)
conf
.
set
(
'mail'
,
'email_host'
,
self
.
mail_host
)
conf
.
set
(
'mail'
,
'email_port'
,
self
.
mail_port
)
conf
.
set
(
'mail'
,
'email_host_user'
,
self
.
mail_addr
)
conf
.
set
(
'mail'
,
'email_host_password'
,
self
.
mail_pass
)
with
open
(
conf_file
,
'w'
)
as
f
:
conf
.
write
(
f
)
def
_setup_mysql
(
self
):
color_print
(
'开始安装设置mysql (请手动设置mysql安全)'
,
'green'
)
bash
(
'yum -y install mysql-server'
)
bash
(
'service mysqld start'
)
bash
(
'mysql -e "create database
%
s default charset=utf8"'
%
self
.
db
)
bash
(
'mysql -e "grant all on
%
s.* to
\'
%
s
\'
@
\'
%
s
\'
identified by
\'
%
s
\'
"'
%
(
self
.
db
,
self
.
db_user
,
self
.
db_host
,
self
.
db_pass
))
@staticmethod
def
_set_env
():
color_print
(
'开始关闭防火墙和selinux'
,
'green'
)
bash
(
'service iptables stop && chkconfig iptables off && setenforce 0'
)
def
_test_db_conn
(
self
):
try
:
MySQLdb
.
connect
(
host
=
self
.
db_host
,
port
=
self
.
db_port
,
user
=
self
.
db_user
,
passwd
=
self
.
db_pass
,
db
=
self
.
db
)
color_print
(
'连接数据库成功'
,
'green'
)
return
True
except
MySQLdb
.
OperationalError
,
e
:
color_print
(
'数据库连接失败
%
s'
%
e
,
'red'
)
return
False
def
_test_mail
(
self
):
try
:
smtp
=
SMTP
(
self
.
mail_host
,
port
=
self
.
mail_port
,
timeout
=
2
)
smtp
.
login
(
self
.
mail_addr
,
self
.
mail_pass
)
smtp
.
sendmail
(
self
.
mail_addr
,
(
self
.
mail_addr
,
),
'''From:
%
s
\r\n
To:
%
s
\r\n
Subject:Jumpserver Mail Test!
\r\n\r\n
Mail test passed!
\r\n
'''
%
(
self
.
mail_addr
,
self
.
mail_addr
))
smtp
.
quit
()
return
True
except
(
SMTPAuthenticationError
,
socket
.
timeout
),
e
:
color_print
(
e
,
'red'
)
return
False
@staticmethod
@staticmethod
def
_rpm_repo
():
def
_rpm_repo
():
...
@@ -51,6 +145,58 @@ class PreSetup(object):
...
@@ -51,6 +145,58 @@ class PreSetup(object):
color_print
(
'开始安装依赖pip包'
,
'green'
)
color_print
(
'开始安装依赖pip包'
,
'green'
)
bash
(
'pip install -r requirements.txt'
)
bash
(
'pip install -r requirements.txt'
)
def
_input_ip
(
self
):
ip
=
raw_input
(
'
\n
请输入您服务器的IP地址,用户浏览器可以访问 [
%
s]: '
%
get_ip_addr
())
self
.
ip
=
ip
if
ip
else
get_ip_addr
()
def
_input_mysql
(
self
):
while
True
:
db_host
=
raw_input
(
'请输入数据库服务器IP [127.0.0.1]: '
)
db_port
=
raw_input
(
'请输入数据库服务器端口 [3306]: '
)
db_user
=
raw_input
(
'请输入数据库服务器用户 [root]: '
)
db_pass
=
raw_input
(
'请输入数据库服务器密码: '
)
db
=
raw_input
(
'请输入使用的数据库 [jumpserver]: '
)
if
db_host
:
self
.
db_host
=
db_host
if
db_port
:
self
.
db_port
=
db_port
if
db_user
:
self
.
db_user
=
db_user
if
db_pass
:
self
.
db_pass
=
db_pass
if
db
:
self
.
db
=
db
mysql
=
raw_input
(
'是否使用已经存在的数据库服务器? (y/n) [n]: '
)
if
mysql
!=
'y'
:
self
.
_setup_mysql
()
if
self
.
_test_db_conn
():
break
print
def
_input_smtp
(
self
):
while
True
:
self
.
mail_host
=
raw_input
(
'请输入SMTP地址: '
)
.
strip
()
self
.
mail_port
=
int
(
raw_input
(
'请输入SMTP端口: '
)
.
strip
())
self
.
mail_addr
=
raw_input
(
'请输入账户: '
)
.
strip
()
self
.
mail_pass
=
raw_input
(
'请输入密码: '
)
.
strip
()
if
self
.
_test_mail
():
color_print
(
'
\n\t
请登陆邮箱查收邮件, 然后确认是否继续安装
\n
'
,
'green'
)
smtp
=
raw_input
(
'是否继续? (y/n) [y]: '
)
if
smtp
==
'n'
:
continue
else
:
break
print
@staticmethod
def
_pull
():
color_print
(
'开始更新jumpserver'
,
'green'
)
bash
(
'git pull'
)
os
.
chdir
(
jms_dir
)
os
.
chmod
(
'logs'
,
0777
)
os
.
chmod
(
'keys'
,
0777
)
def
start
(
self
):
def
start
(
self
):
self
.
_rpm_repo
()
self
.
_rpm_repo
()
self
.
_depend_rpm
()
self
.
_depend_rpm
()
...
...
install/next.py
View file @
59591c2a
...
@@ -3,15 +3,9 @@
...
@@ -3,15 +3,9 @@
import
sys
import
sys
import
os
import
os
import
MySQLdb
import
smtplib
import
ConfigParser
import
django
import
django
from
django.core.management
import
execute_from_command_line
from
django.core.management
import
execute_from_command_line
import
socket
import
shutil
from
smtplib
import
SMTP
,
SMTPAuthenticationError
,
SMTPConnectError
import
fcntl
import
struct
jms_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
jms_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
sys
.
path
.
append
(
jms_dir
)
sys
.
path
.
append
(
jms_dir
)
...
@@ -20,153 +14,18 @@ os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings'
...
@@ -20,153 +14,18 @@ os.environ['DJANGO_SETTINGS_MODULE'] = 'jumpserver.settings'
if
django
.
get_version
()
!=
'1.6'
:
if
django
.
get_version
()
!=
'1.6'
:
setup
=
django
.
setup
()
setup
=
django
.
setup
()
from
jumpserver.api
import
chown
,
bash
,
PyCrypt
,
ServerError
,
get_object
,
mkdir
from
juser.user_api
import
db_add_user
,
server_add_user
from
juser.user_api
import
db_add_user
,
server_add_user
from
connect
import
color_print
from
connect
import
color_print
def
get_ip_addr
(
ifname
=
'eth0'
):
try
:
s
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_DGRAM
)
return
socket
.
inet_ntoa
(
fcntl
.
ioctl
(
s
.
fileno
(),
0x8915
,
struct
.
pack
(
'256s'
,
ifname
[:
15
])
)[
20
:
24
])
except
:
ips
=
os
.
popen
(
"LANG=C ifconfig | grep
\"
inet addr
\"
| grep -v
\"
127.0.0.1
\"
| awk -F
\"
:
\"
'{print $2}' | awk '{print $1}'"
)
.
readlines
()
if
len
(
ips
)
>
0
:
return
ips
[
0
]
return
''
class
Setup
(
object
):
class
Setup
(
object
):
"""
"""
安装jumpserver向导
安装jumpserver向导
"""
"""
def
__init__
(
self
):
self
.
db_host
=
'127.0.0.1'
self
.
db_port
=
3306
self
.
db_user
=
'jumpserver'
self
.
db_pass
=
'mysql234'
self
.
db
=
'jumpserver'
self
.
mail_host
=
'smtp.qq.com'
self
.
mail_port
=
25
self
.
mail_addr
=
'hello@jumpserver.org'
self
.
mail_pass
=
''
self
.
ip
=
''
self
.
admin_user
=
'admin'
self
.
admin_pass
=
'Lov@jms'
def
write_conf
(
self
,
conf_file
=
os
.
path
.
join
(
jms_dir
,
'jumpserver.conf'
)):
color_print
(
'开始写入配置文件'
,
'green'
)
conf
=
ConfigParser
.
ConfigParser
()
conf
.
read
(
conf_file
)
conf
.
set
(
'base'
,
'url'
,
'http://
%
s'
%
self
.
ip
)
conf
.
set
(
'db'
,
'host'
,
self
.
db_host
)
conf
.
set
(
'db'
,
'port'
,
self
.
db_port
)
conf
.
set
(
'db'
,
'user'
,
self
.
db_user
)
conf
.
set
(
'db'
,
'pass'
,
self
.
db_pass
)
conf
.
set
(
'db'
,
'database'
,
self
.
db
)
conf
.
set
(
'websocket'
,
'web_socket_host'
,
'
%
s: 3000'
%
self
.
ip
)
conf
.
set
(
'mail'
,
'email_host'
,
self
.
mail_host
)
conf
.
set
(
'mail'
,
'email_port'
,
self
.
mail_port
)
conf
.
set
(
'mail'
,
'email_host_user'
,
self
.
mail_addr
)
conf
.
set
(
'mail'
,
'email_host_password'
,
self
.
mail_pass
)
with
open
(
conf_file
,
'w'
)
as
f
:
conf
.
write
(
f
)
def
_setup_mysql
(
self
):
color_print
(
'开始安装设置mysql (请手动设置mysql安全)'
,
'green'
)
bash
(
'yum -y install mysql-server'
)
bash
(
'service mysqld start'
)
bash
(
'mysql -e "create database
%
s default charset=utf8"'
%
self
.
db
)
bash
(
'mysql -e "grant all on
%
s.* to
\'
%
s
\'
@
\'
%
s
\'
identified by
\'
%
s
\'
"'
%
(
self
.
db
,
self
.
db_user
,
self
.
db_host
,
self
.
db_pass
))
@staticmethod
def
_pull
():
color_print
(
'开始更新jumpserver'
,
'green'
)
bash
(
'git pull'
)
os
.
chdir
(
jms_dir
)
mkdir
(
'logs'
,
mode
=
0777
)
mkdir
(
'keys'
,
mode
=
0777
)
@staticmethod
def
_set_env
():
color_print
(
'开始关闭防火墙和selinux'
,
'green'
)
bash
(
'service iptables stop && chkconfig iptables off && setenforce 0'
)
def
_test_db_conn
(
self
):
try
:
MySQLdb
.
connect
(
host
=
self
.
db_host
,
port
=
self
.
db_port
,
user
=
self
.
db_user
,
passwd
=
self
.
db_pass
,
db
=
self
.
db
)
color_print
(
'连接数据库成功'
,
'green'
)
return
True
except
MySQLdb
.
OperationalError
,
e
:
color_print
(
'数据库连接失败
%
s'
%
e
,
'red'
)
return
False
def
_test_mail
(
self
):
def
__init__
(
self
):
try
:
self
.
admin_user
=
''
smtp
=
SMTP
(
self
.
mail_host
,
port
=
self
.
mail_port
,
timeout
=
2
)
self
.
admin_pass
=
''
smtp
.
login
(
self
.
mail_addr
,
self
.
mail_pass
)
smtp
.
sendmail
(
self
.
mail_addr
,
(
self
.
mail_addr
,
),
'''From:
%
s
\r\n
To:
%
s
\r\n
Subject:Jumpserver Mail Test!
\r\n\r\n
Mail test passed!
\r\n
'''
%
(
self
.
mail_addr
,
self
.
mail_addr
))
smtp
.
quit
()
return
True
except
(
SMTPAuthenticationError
,
socket
.
timeout
),
e
:
color_print
(
e
,
'red'
)
return
False
def
_input_ip
(
self
):
ip
=
raw_input
(
'
\n
请输入您服务器的IP地址,用户浏览器可以访问 [
%
s]: '
%
get_ip_addr
())
self
.
ip
=
ip
if
ip
else
get_ip_addr
()
def
_input_mysql
(
self
):
while
True
:
db_host
=
raw_input
(
'请输入数据库服务器IP [127.0.0.1]: '
)
db_port
=
raw_input
(
'请输入数据库服务器端口 [3306]: '
)
db_user
=
raw_input
(
'请输入数据库服务器用户 [root]: '
)
db_pass
=
raw_input
(
'请输入数据库服务器密码: '
)
db
=
raw_input
(
'请输入使用的数据库 [jumpserver]: '
)
if
db_host
:
self
.
db_host
=
db_host
if
db_port
:
self
.
db_port
=
db_port
if
db_user
:
self
.
db_user
=
db_user
if
db_pass
:
self
.
db_pass
=
db_pass
if
db
:
self
.
db
=
db
mysql
=
raw_input
(
'是否使用已经存在的数据库服务器? (y/n) [n]: '
)
if
mysql
!=
'y'
:
self
.
_setup_mysql
()
if
self
.
_test_db_conn
():
break
print
def
_input_smtp
(
self
):
while
True
:
self
.
mail_host
=
raw_input
(
'请输入SMTP地址: '
)
.
strip
()
self
.
mail_port
=
int
(
raw_input
(
'请输入SMTP端口: '
)
.
strip
())
self
.
mail_addr
=
raw_input
(
'请输入账户: '
)
.
strip
()
self
.
mail_pass
=
raw_input
(
'请输入密码: '
)
.
strip
()
if
self
.
_test_mail
():
color_print
(
'
\n\t
请登陆邮箱查收邮件, 然后确认是否继续安装
\n
'
,
'green'
)
smtp
=
raw_input
(
'是否继续? (y/n) [y]: '
)
if
smtp
==
'n'
:
continue
else
:
break
print
def
_input_admin
(
self
):
def
_input_admin
(
self
):
while
True
:
while
True
:
...
@@ -190,15 +49,14 @@ class Setup(object):
...
@@ -190,15 +49,14 @@ class Setup(object):
admin_groups
=
''
,
email
=
'admin@jumpserver.org'
,
uuid
=
'MayBeYouAreTheFirstUser'
,
is_active
=
True
)
admin_groups
=
''
,
email
=
'admin@jumpserver.org'
,
uuid
=
'MayBeYouAreTheFirstUser'
,
is_active
=
True
)
server_add_user
(
self
.
admin_user
,
self
.
admin_user
,
ssh_key_login_need
=
False
)
server_add_user
(
self
.
admin_user
,
self
.
admin_user
,
ssh_key_login_need
=
False
)
@staticmethod
def
_cp_zzsh
():
os
.
chdir
(
jms_dir
)
shutil
.
copy
(
'zzjumpserver.sh'
,
'/etc/profile.d/'
)
def
start
(
self
):
def
start
(
self
):
print
"开始安装Jumpserver, 要求环境为 CentOS 6.5 x86_64"
print
"开始安装Jumpserver, 要求环境为 CentOS 6.5 x86_64"
self
.
_pull
()
self
.
_input_ip
()
self
.
_input_mysql
()
self
.
_input_smtp
()
self
.
_sync_db
()
self
.
_sync_db
()
self
.
write_conf
()
self
.
_input_admin
()
self
.
_create_admin
()
self
.
_create_admin
()
...
...
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