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
6798dd86
Commit
6798dd86
authored
Dec 18, 2015
by
广宏伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加安装脚本
parent
d72a8ac5
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
228 additions
and
3 deletions
+228
-3
README.md
docs/README.md
+0
-2
install.py
install/install.py
+227
-0
user_api.py
juser/user_api.py
+1
-1
No files found.
docs/README.md
View file @
6798dd86
...
@@ -104,4 +104,3 @@
...
@@ -104,4 +104,3 @@
\ No newline at end of file
install/install.py
0 → 100644
View file @
6798dd86
#!/usr/bin/python
# coding: utf-8
import
sys
import
os
import
MySQLdb
import
smtplib
import
ConfigParser
import
django
from
django.core.management
import
execute_from_command_line
import
socket
from
smtplib
import
SMTP
,
SMTPAuthenticationError
,
SMTPConnectError
import
fcntl
import
struct
jms_dir
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
sys
.
path
.
append
(
jms_dir
)
os
.
environ
[
'DJANGO_SETTINGS_MODULE'
]
=
'jumpserver.settings'
if
django
.
get_version
()
!=
'1.6'
:
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
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
):
"""
安装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
)
@staticmethod
def
_rpm_repo
():
color_print
(
'开始安装epel源'
,
'green'
)
bash
(
'yum -y install epel-release'
)
@staticmethod
def
_depend_rpm
():
color_print
(
'开始安装依赖rpm包'
,
'green'
)
bash
(
'yum -y install git python-pip mysql-devel gcc automake autoconf python-devel vim sshpass'
)
@staticmethod
def
_require_pip
():
color_print
(
'开始安装依赖pip包'
,
'green'
)
os
.
chdir
(
jms_dir
)
bash
(
'pip install -r install/requirements.txt'
)
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
):
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
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
):
while
True
:
self
.
admin_user
=
raw_input
(
'请输入管理员用户名 [
%
s]: '
%
self
.
admin_user
)
.
strip
()
self
.
admin_pass
=
raw_input
(
'请输入管理员密码: '
)
.
strip
()
admin_pass_again
=
raw_input
(
'请再次输入管理员密码: '
)
.
strip
()
if
self
.
admin_pass
!=
admin_pass_again
:
color_print
(
'两次密码不相同请重新输入'
)
else
:
break
print
@staticmethod
def
_sync_db
():
os
.
chdir
(
jms_dir
)
execute_from_command_line
([
'manage.py'
,
'syncdb'
,
'--noinput'
])
def
_create_admin
(
self
):
db_add_user
(
username
=
self
.
admin_user
,
password
=
self
.
admin_pass
,
role
=
'SU'
,
name
=
'admin'
,
groups
=
''
,
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
)
def
start
(
self
):
print
"开始安装Jumpserver, 要求环境为 CentOS 6.5 x86_64"
self
.
_pull
()
self
.
_set_env
()
self
.
_rpm_repo
()
self
.
_depend_rpm
()
self
.
_require_pip
()
self
.
_input_ip
()
self
.
_input_mysql
()
self
.
_input_smtp
()
self
.
_sync_db
()
self
.
write_conf
()
self
.
_input_admin
()
self
.
_create_admin
()
if
__name__
==
'__main__'
:
setup
=
Setup
()
setup
.
start
()
juser/user_api.py
View file @
6798dd86
...
@@ -146,7 +146,7 @@ def gen_ssh_key(username, password='',
...
@@ -146,7 +146,7 @@ def gen_ssh_key(username, password='',
chown
(
authorized_key_file
,
username
)
chown
(
authorized_key_file
,
username
)
def
server_add_user
(
username
,
password
,
ssh_key_pwd
,
ssh_key_login_need
):
def
server_add_user
(
username
,
password
,
ssh_key_pwd
=
''
,
ssh_key_login_need
=
True
):
"""
"""
add a system user in jumpserver
add a system user in jumpserver
在jumpserver服务器上添加一个用户
在jumpserver服务器上添加一个用户
...
...
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