一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

概述
前面介紹了jumpserver部署的過程,后來整理了下,改成這個一鍵部署腳本,下面的腳本是基于centos7環境測試,如果是其他系統(如redhat7)就要考慮yum源等因素了 。
一鍵部署jumpserver腳本
#!/bin/bash
# coding: utf-8
# Copyright by hwb
###############################usage##################################
#1、操作系統為centos7(如果為redhat7配置yum部分需修改)
#2、服務器可以上外網
【一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件】#3、端口規劃
#ProtocolServer namePort
#TCPJumpserver8080
#TCPCoco2222, 5000
#TCPGuacamole8081
#TCPDb3306
#TCPRedis6379
#TCPNginx80
###############################usage##################################
set -e#返回值為非0時,退出腳本
echo “===========================0. 系統的一些配置===========================”
setenforce 0 || true
#systemctl stop iptables.service || true >/dev/null 2>&1
systemctl stop firewalld.service || true >/dev/null 2>&1
localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8
export LC_ALL=zh_CN.UTF-8
echo ‘LANG=zh_CN.UTF-8’ > /etc/sysconfig/i18n
echo “===========================1. 備份yum==================================”
{
for i in /etc/yum.repos.d/*.repo;do cp $i ${i%.repo}.bak;done
rm -rf /etc/yum.repos.d/*.repo
} || {
echo “yum出錯,請更換源重新運行”
exit 1
}
echo “===========================2. 獲取網絡yum==============================”
{
wget -P /etc/yum.repos.d/ http://mirrors.aliyun.com/repo/Centos-7.repo >/dev/null 2>&1
wget -P /etc/yum.repos.d/ http://mirrors.163.com/.help/CentOS7-Base-163.repo >/dev/null 2>&1
sed -i ‘s/$releasever/7/g’ /etc/yum.repos.d/CentOS7-Base-163.repo
yum clean all&&yum makecache
yum repolist >/dev/null 2>&1
} || {
echo “yum出錯,請更換源重新運行”
exit 1
}
echo “===========================3. 安裝基本依賴=============================”
{
yum update -y>/dev/null && yum install wget unzip epel-release nginx sqlite-devel xz gcc automake zlib-devel openssl-devel redis mariadb mariadb-devel mariadb-server supervisor -y >/dev/null 2>&1
} || {
echo “yum出錯,請更換源重新運行”
exit 1
}
echo “===========================4. 準備python===============================”
{
cd /opt/
wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz -O /opt/Python-3.6.1.tar.xz >/dev/null 2>&1
} || {
echo “pyhton 依賴包下載出錯,請嘗試使用特殊工具進行手工下載https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tar.xz,并且放至于/opt/Python-3.6.1.tar.xz,如您是手工下載,請注釋上面wget命令再運行本腳本”
exit 1
}
{
tar xf Python-3.6.1.tar.xz && cd Python-3.6.1 && ./configure>/dev/null && make>/dev/null && make install >/dev/null 2>&1
} || {
echo “解壓或編譯python出錯,請嘗試使用上面的命令手工解壓或編譯,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
{
python3 -m venv py3
} || {
echo “建立python虛擬環境出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
echo “===========================5. 下載jummpserver包并解壓==================”
{
wget https://github.com/jumpserver/jumpserver/archive/v1.4.10.zip -O /opt/jumpserver.zip >/dev/null 2>&1
} || {
echo “下載jumpserver包出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
{
wget https://github.com/jumpserver/coco/archive/1.4.10.zip -O /opt/coco.zip >/dev/null 2>&1
} || {
echo “下載coco包出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
{
wget https://github.com/jumpserver/luna/releases/download/1.4.10/luna.tar.gz -O /opt/luna.tar.gz >/dev/null 2>&1
} || {
echo “下載luna包出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
{
cd /opt
unzip coco.zip >/dev/null && mv coco-1.4.10 coco && unzip jumpserver.zip >/dev/null && mv jumpserver-1.4.10 jumpserver && tar xzf luna.tar.gz >/dev/null 2>&1
} || {
echo “解壓出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
echo “===========================6. 安裝yum依賴==============================”
{
yum -y install $(cat /opt/jumpserver/requirements/rpm_requirements.txt) >/dev/null && yum -y install $(cat /opt/coco/requirements/rpm_requirements.txt) >/dev/null 2>&1
} || {
echo “安裝jumpserver的依賴出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
#更新pip版本
#python -m pip install –upgrade pip
echo “===========================7. 安裝pip依賴==============================”
{
python3 -m venv py3 &&
source /opt/py3/bin/activate && pip install –upgrade pip>/dev/null && pip install -r /opt/jumpserver/requirements/requirements.txt>/dev/null && pip install -r /opt/coco/requirements/requirements.txt >/dev/null 2>&1
} || {
echo “安裝jumpserver的依賴出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
echo “===========================8. 創建數據庫===============================”
mkdir -p /opt/mysql/share/mysql/
{
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/mysql_security.sql?raw=true -O /opt/mysql/mysql_security.sql >/dev/null 2>&1
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/mysql.cnf?raw=true -O /etc/my.cnf >/dev/null 2>&1
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/errmsg.sys?raw=true -O /opt/mysql/share/mysql/errmsg.sys >/dev/null 2>&1
} || {
echo “下載數據庫依賴文件出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
echo “===========================9. 準備文件=================================”
{
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/nginx.conf?raw=true -O /etc/nginx/nginx.conf >/dev/null 2>&1
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/supervisord.conf?raw=true -O /etc/supervisord.conf >/dev/null 2>&1
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/jumpserver_conf.py?raw=true -O /opt/jumpserver/config.py >/dev/null 2>&1
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/coco_conf.py?raw=true -O /opt/coco/conf.py >/dev/null 2>&1
wget https://github.com/jumpserver/Dockerfile/blob/mysql/alpine/start_jms.sh?raw=true -O /opt/start_jms.sh >/dev/null 2>&1
} || {
echo “下載配置文件出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
echo “===========================10. 安裝docker==============================”
yum check-update >/dev/null 2>&1
{
yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo >/dev/null && yum clean all>/dev/null && yum repolist >/dev/null 2>&1
yum -y install epel-release docker-ce >/dev/null 2>&1
systemctl start docker
tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl -p >/dev/null 2>&1
tee -a /etc/docker/daemon.json <<-EOF
{
“registry-mirrors”: [
“https://registry.docker-cn.com”
]
}
EOF
} || {
echo “安裝docker 出錯,請嘗試手工執行,如手工操作成功,請注釋上述代碼再運行本腳本”
exit 1
}
systemctl daemon-reload
systemctl restart docker
echo “===========================11. 安裝guacamole===========================”
host_ip=`python -c “import socket;print([(s.connect((‘8.8.8.8’, 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])”`
docker run –name jms_guacamole -d
–restart always
-p 8081:8080 -v /opt/guacamole/key:/config/guacamole/key
-e JUMPSERVER_KEY_DIR=/config/guacamole/key
-e JUMPSERVER_SERVER=http://$host_ip:8080
registry.jumpserver.org/public/guacamole:1.0.0
echo “===========================12. 配置nginx===============================”
yum -y install nginx >/dev/null 2>&1
cat << EOF > /etc/nginx/conf.d/jumpserver.conf
server {
listen 80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /luna/ {
try_files $uri / /index.html;
alias /opt/luna/;
}
location /media/ {
add_header Content-Encoding gzip;
root /opt/jumpserver/data/;
}
location /static/ {
root /opt/jumpserver/data/;
}
location /socket.io/ {
proxy_pass http://localhost:5000/socket.io/; # 如果coco安裝在別的服務器,請填寫它的ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
}
location /guacamole/ {
proxy_pass http://localhost:8081/; # 如果guacamole安裝在別的服務器,請填寫它的ip
proxy_buffering off;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
access_log off;
}
location / {
proxy_pass http://localhost:8080; # 如果jumpserver安裝在別的服務器,請填寫它的ip
}
}
EOF
systemctl start mariadb
mkdir -p /opt/nginx/log && chmod -R 777 /opt/nginx
{
systemctl restart nginx
systemctl enable nginx
} || {
service restart nginx
} || {
nginx -s reload
} || {
echo “請檢查nginx的啟動命令”
exit 1
}
chmod +x /opt/start_jms.sh
echo ” 安裝完成,請運行/opt/start_jms.sh啟動jumpserver”
腳本調試過程

一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖


一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖


一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖


一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖


一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖


一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖


一鍵部署jumpserver腳本 誰知道有什么方便好用的跳板軟件

文章插圖