企业常用shell脚本汇总

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 企业常用shell脚本汇总

一、数据库

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
mysql_dir=mysql
get_mysql() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz" "1bc406d2fe18dd877182a0bd603e7bd4"
}
install_mysql() {
  remove_mysql
    test_dir $mysql_dir
    #清理mariadb的东西
    for i in `rpm -qa | grep mariadb`; do rpm -e --nodeps $i; done
    test_install autoconf libaio bison ncurses-devel
    groupadd mysql
    useradd -g mysql -s /sbin/nologin mysql
    get_mysql
    tar -xf package/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
    mv mysql-5.6.39-linux-glibc2.12-x86_64 ${install_dir}/${mysql_dir}
    chown -R mysql:mysql ${install_dir}/${mysql_dir}
    chown -R mysql:mysql ${log_dir}/${mysql_dir}
    echo 'PATH=$PATH':${install_dir}/${mysql_dir}/bin >> /etc/profile
    clear
  echo "mysql" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${mysql_dir}
日志目录:${log_dir}/${mysql_dir}
环境变量设置完成"
  else
    echo "install ok
Installation manual:${install_dir}/${mysql_dir}
Log directory:${log_dir}/${mysql_dir}
Environment variable setting completed"
  fi
}
remove_mysql() {
  rm -rf ${install_dir}/${mysql_dir}
  hang=`grep -n 'PATH=$PATH':${install_dir}/${mysql_dir}/bin /etc/profile | awk -F':' '{print $1}'`
  [ ! $hang ] || sed -i "${hang} d" /etc/profile
  test_remove mysql
  [ "$language" == "cn" ] && echo "mysql卸载完成!" || echo "mysql Uninstall completed!"
}
info_mysql() {
  if [ "$language" == "cn" ];then
    echo "名字:mysql
版本:6.39
介绍:数据库,支持多种存储引擎
类型:服务"
  else
    echo "Name:mysql
Version:6.39
Introduce:Database, supports multiple storage engines
Type: server"
  fi
}

二、跳板机批量操作脚本

#!/usr/bin/env bash
get_batch() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_batch() {
  remove_batch
    test_bin batch
    clear
  echo "batch" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/batch
启动:batch
使用说明:根据/etc/hosts文件和免密登陆来进行批量ssh操作
支持对/etc/hosts中的主机分组,需要修改脚本
支持对rm等命令进行禁用,防止批量操作产生影响,需要修改脚本"
  else
    echo "install ok
Start:batch
Instructions for use: batch ssh operations based on the /etc/hosts file and free login
Support for grouping hosts in /etc/hosts, need to modify the script
Supports the disablement of commands such as rm to prevent batch operations from affecting the script. You need to modify the script."
  fi
}
remove_batch() {
  rm -rf /usr/local/bin/batch
  test_remove batch
  [ "$language" == "cn" ] && echo "batch卸载完成!" || echo "batch Uninstall completed!"
}
info_batch() {
  if [ "$language" == "cn" ];then
    echo "名字:batch
版本:1.2
介绍:跳板机批量操作脚本
类型:系统管理"
  else
    echo "Name:batch
Version:1.2
Introduce:Springboard batch operation script
Type: System Management"
  fi
}

三、文档管理系统MinDoc

#!/usr/bin/env bash
#[使用设置]
#当前只支持使用sqlite3数据库安装,若使用mysql请手动安装
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
mindoc_dir=mindoc
#端口
port=8181
get_mindoc() {
    test_package https://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/mindoc.tar.gz 3edf05c97977f71f8b052818fd5a5412
}
install_mindoc() {
    #检测目录
  remove_mindoc
    test_dir $mindoc_dir
    #安装服务
    get_mindoc
    tar -xf package/mindoc.tar.gz
    mv mindoc ${install_dir}/${mindoc_dir}
    conf=${install_dir}/${mindoc_dir}/conf/app.conf
    sed -i "s/httpport = 8181/httpport = ${port}/g" $conf
  chmod +x ${install_dir}/${mindoc_dir}/mindoc_linux_amd64
  ${install_dir}/${mindoc_dir}/mindoc_linux_amd64 install
    sqlite3 -version
    [ $? -eq 0 ] || bash sai.sh install sqlite
    strings /lib64/libc.so.6 |grep ^GLIBC_2.14
    [ $? -eq 0 ] || bash sai.sh install glibc
    test_bin man-mindoc
    sed -i "2a install_dir=${install_dir}" $command
    sed -i "3a log_dir=${log_dir}" $command
    sed -i "4a mindoc_dir=${mindoc_dir}" $command
    clear
  echo "mindoc" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${mindoc_dir}
日志目录:${log_dir}/${mindoc_dir}
启动:man-mindoc start
访问:curl http://127.0.0.1:${port}
管理员账号:admin
管理员密码:123456"
  else
    echo "install ok
Installation manual:${install_dir}/${mindoc_dir}
Log directory:${log_dir}/${mindoc_dir}
Start:man-mindoc start
Access:curl http://127.0.0.1:${port}
Administrator account: admin
Administrator password: 123456"
  fi
}
remove_mindoc() {
  rm -rf /usr/local/bin/man-mindoc
  rm -rf ${install_dir}/${mindoc_dir}
  test_remove mindoc
  [ "$language" == "cn" ] && echo "mindoc卸载完成!" || echo "mindoc Uninstall completed!"
}
info_mindoc() {
  if [ "$language" == "cn" ];then
    echo "名字:mindoc
版本:0.9
介绍:MinDoc 是一款针对IT团队开发的简单好用的文档管理系统。
类型:服务"
  else
    echo "Name:mindoc
Version:0.9
Introduce:MinDoc is a simple and easy-to-use document management system developed for the IT team.
Type: server"
  fi
}

四、配置mysql多实例

#!/usr/bin/env bash
#[使用设置]
#开启实例的端口
cluster_ip=(3307 3308)
source script/mysql.sh
get_mysql_port() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_mysql_port() {
  remove_mysql_port
    [ -f ${install_dir}/${mysql_dir}/scripts/mysql_install_db ] || test_exit "请先安装mysql" "Please install mysql first"
     echo "[client]
port=3306
socket=${install_dir}/${mysql_dir}/mysql.sock
[mysqld_multi]
mysqld=${install_dir}/${mysql_dir}/bin/mysqld_safe
mysqladmin=${install_dir}/${mysql_dir}/bin/mysqladmin
log=${log_dir}/${mysql_dir}/mysqld_multi.log
[mysqld]
user=mysql
basedir=${install_dir}/${mysql_dir}
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES"  > /etc/my.cnf #基本配置
    for i in `echo ${cluster_ip[*]}`
    do
        [ -d ${install_dir}/${mysql_dir}/data${i} ] && continue
        mkdir ${install_dir}/${mysql_dir}/data${i}
        echo "[mysqld${i}]  
mysqld=mysqld  
mysqladmin=mysqladmin  
datadir=${install_dir}/${mysql_dir}/data${i}
port=${i}
server_id=${i}  
socket=${install_dir}/${mysql_dir}/mysql_${i}.sock  
log-output=file  
slow_query_log = 1  
long_query_time = 1  
slow_query_log_file =${log_dir}/${mysql_dir}/${i}_slow.log  
log-error =${log_dir}/${mysql_dir}/${i}_error.log  
binlog_format = mixed  
log-bin =${log_dir}/${mysql_dir}/${i}_bin" >> /etc/my.cnf
echo >> /etc/my.cnf
    done
    chown -R mysql:mysql ${install_dir}/${mysql_dir}
    for i in `echo ${cluster_ip}`
    do
        ${install_dir}/${mysql_dir}/scripts/mysql_install_db --basedir=${install_dir}/${mysql_dir} --datadir=${install_dir}/${mysql_dir}/data${i} --defaults-file=/etc/my.cnf &> /dev/null
    done
  clear
  echo "mysql-port" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${mysql_dir}/data*
日志目录:${log_dir}/${mysql_dir}
启动:mysqld_multi start
访问:mysql -S ${install_dir}/${mysql_many_dir}/mysql_${i}.sock"
  else
    echo "install ok
Installation manual:${install_dir}/${mysql_dir}
Log directory:${log_dir}/${mysql_dir}
Start:mysqld_multi start
Environment variable setting completed
Access:mysql -S ${install_dir}/${mysql_many_dir}/mysql_${i}.sock"
  fi
}
remove_mysql_port() {
  > /etc/my.cnf
    for i in `echo ${cluster_ip[*]}`
    do
        rm -rf ${install_dir}/${mysql_dir}/data${i}
  done
  test_remove mysql-port
  [ "$language" == "cn" ] && echo "mysql_port卸载完成!" || echo "mysql_port Uninstall completed!"
}
info_mysql_port() {
  if [ "$language" == "cn" ];then
    echo "名字:mysql-port
版本:mysql
介绍:配置mysql多实例
类型:服务"
  else
    echo "Name:mysql-port
Version:mysql
Introduce:Configure mysql multiple instances
Type: server
"
  fi
}

五、配置mysql单点

#!/usr/bin/env bash
#[使用设置]
#默认端口
port=3306
source script/mysql.sh
get_mysql_single() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_mysql_single() {
  remove_mysql_single
    [ -f ${install_dir}/${mysql_dir}/scripts/mysql_install_db ] || test_exit "请先安装mysql" "Please install mysql first"
    echo "[mysql]
default-character-set=utf8
socket=${install_dir}/${mysql_dir}/mysql.sock
[mysqld]
skip-name-resolve
port = ${port}
socket=${install_dir}/${mysql_dir}/mysql.sock
basedir=${install_dir}/${mysql_dir}
datadir=${install_dir}/${mysql_dir}/data
max_connection=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_name=1
max_allowed_packet=16M
log-error=${log_dir}/${mysql_dir}/mysql.log
pid-file=${log_dir}/${mysql_dir}/mysql.pid
bind-address = 0.0.0.0" > /etc/my.cnf #这里改需要的配置
    chown mysql:mysql /etc/my.cnf
    #初始化脚本
    cd ${install_dir}/${mysql_dir}
    ./scripts/mysql_install_db --user=mysql --basedir=${install_dir}/${mysql_dir} --datadir=${install_dir}/${mysql_dir}/data &> /dev/null
    #加入systemctl
    rm -rf /usr/lib/systemd/system/mysql.service
    echo "[Unit]
Description=mysql
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=${install_dir}/${mysql_dir}/support-files/mysql.server start
ExecReload=${install_dir}/${mysql_dir}/support-files/mysql.server restart
ExecStop=${install_dir}/${mysql_dir}/support-files/mysql.server stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target" > /usr/lib/systemd/system/mysql.service
    systemctl daemon-reload
    clear
  echo "caed-single" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${mysql_dir}
日志目录:${log_dir}/${mysql_dir}
启动:systemctl start mysql"
  else
    echo "install ok
Installation manual:${install_dir}/${mysql_dir}
Log directory:${log_dir}/${mysql_dir}
Start:systemctl start mysql"
  fi
}
remove_mysql_single() {
  rm -rf rm -rf /usr/lib/systemd/system/mysql.service
  > /etc/my.cnf
  test_remove mysql-single
  [ "$language" == "cn" ] && echo "mysql-single卸载完成!" || echo "mysql-single Uninstall completed!"
}
info_mysql_single() {
  if [ "$language" == "cn" ];then
    echo "名字:mysql-single
版本:mysql
介绍:配置mysql单点
类型:服务"
  else
    echo "Name:mysql-single
Version:mysql
Introduce:Configure mysql single point
Type: server"
  fi
}

六、Nginx

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
nginx_dir=nginx
get_nginx() {
    test_package https://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/nginx-1.8.0.tar.gz 3ca4a37931e9fa301964b8ce889da8cb
}
install_nginx() {
    #检测目录
  remove_nginx
    test_dir $nginx_dir
  test_install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel 
  useradd -s /sbin/nologin nginx
  get_nginx
    tar -xf package/nginx-1.8.0.tar.gz
  cd nginx-1.8.0
  #这里指定模块,请按需求添加
  ./configure --prefix=${install_dir}/${nginx_dir} --user=nginx --group=nginx --with-http_ssl_module --error-log-path=${log_dir}/${nginx_dir}/error.log --http-log-path=${log_dir}/${nginx_dir}/access.log
  make && make install
  ln -s ${install_dir}/${nginx_dir}/sbin/nginx /usr/local/bin/nginx
  nginx -v
  [ $? -eq 0 ] || test_exit "安装失败,请检查脚本" "Installation failed, please check the script"
    clear
  echo "nginx" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${nginx_dir}
日志目录:${log_dir}/${nginx_dir}
启动:nginx
关闭:nginx -s stop
访问:curl http://127.0.0.1:80"
  else
    echo "install ok
Installation manual:${install_dir}/${nginx_dir}
Log directory:${log_dir}/${nginx_dir}
Start:nginx
Stop:nginx -s stop
Access:curl http://127.0.0.1:80"
  fi
}
remove_nginx() {
  userdel -r nginx
  rm -rf ${install_dir}/${nginx_dir}
  test_remove nginx
  [ "$language" == "cn" ] && echo "nginx卸载完成!" || echo "nginx Uninstall completed!"
}
info_nginx() {
  if [ "$language" == "cn" ];then
    echo "名字:nginx
版本:1.8.0
介绍:Nginx是一款轻量的web服务器
类型:服务
"
  else
    echo "Name:nginx
Version:1.8.0
Introduce:Nginx is a lightweight web server
Type: server"
  fi
}

七、Node.js

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#服务目录名
modejs_dir=nodejs
get_nodejs() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/node-v8.9.3-linux-x64.tar.xz" "32948a8ca5e6a7b69c03ec1a23b16cd2"
}
install_nodejs() {
    #检测目录
    remove_nodejs
    test_dir $nodejs_dir
    get_nodejs
    tar -xf package/node-v8.9.3-linux-x64.tar.xz
    mv node-v8.9.3-linux-x64 ${install_dir}/${nodejs_dir}
    #链接
  rm -rf /usr/local/bin/node
    rm -rf /usr/local/bin/npm
    ln -s ${install_dir}/${nodejs_dir}/bin/node /usr/local/bin/node
    ln -s ${install_dir}/${nodejs_dir}/bin/npm /usr/local/bin/npm
    #对结果进行测试
    node -v
    [ $? -eq 0 ] || test_exit "Installation failed, please check the installation script"
    clear
  echo "nodejs" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${nodejs_dir}
环境变量设置完成"
  else
    echo "install ok
Installation manual:${install_dir}/${nodejs_dir}
Environment variable setting completed"
  fi
}
remove_nodejs() {
    rm -rf /usr/local/bin/node
    rm -rf /usr/local/bin/npm
  rm -rf ${install_dir}/${nodejs_dir}
  test_remove nodejs
  [ "$language" == "cn" ] && echo "nodejs卸载完成!" || echo "nodejs Uninstall completed!"
}
info_nodejs() {
  if [ "$language" == "cn" ];then
    echo "名字:nodejs
版本:8.9.3
介绍: Node.js 就是运行在服务端的 JavaScript。
类型:语言"
  else
    echo "Name:nodejs
Version:8.9.3
Introduce:Node.js is JavaScript that runs on the server.
Type: Language"
  fi
}

八、防弱密码爆破脚本

#!/usr/bin/env bash
get_notty() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_notty() {
  remove_notty
    test_bin notty
    clear
  echo "notty" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/notty
启动:notty
修改:修改失败次数请编辑脚本文件
建议:建议将脚本加入crontab"
  else
    echo "install ok
Start:notty
Modify: modify the number of failures, please edit the script file
Recommendation: It is recommended to add the script to the crontab"
  fi
}
remove_notty() {
  rm -rf /usr/local/bin/notty
  test_remove notty
  [ "$language" == "cn" ] && echo "notty卸载完成!" || echo "notty Uninstall completed!"
}
info_notty() {
  if [ "$language" == "cn" ];then
    echo "名字:notty
版本:1.2
介绍:防弱密码爆破脚本,5次登陆系统失败的ip会被禁止
类型:系统管理"
  else
    echo "Name:notty
Version:1.2
Introduce:Anti-weak password cracking script, 5 failed login ip will be forbidden
Type: System Management"
  fi
}

九、安装python3.6

#!/usr/bin/env bash
#主目录
#install_dir=
#服务目录
#python_dir=python3.6
get_python() {
  test_package https://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/Python-3.6.0.tgz 3f7062ccf8be76491884d0e47ac8b251
}
install_python() {
  remove_python
  test_dir $python_dir
  test_install gcc make cmake openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
  tar -xf package/Python-3.6.0.tgz
  cd Python-3.6.0
  ./configure --prefix=${install_dir}/${python_dir}
  make
  make altinstall
  #备份python2的连接命令
  mv /usr/bin/python /usr/bin/python.back
  #将3的连接默认
  ln -s /usr/local/python3.6/bin/python3.6 /usr/local/bin/python
  ln -s /usr/local/python3.6/bin/python3.6 /usr/local/bin/python3
  #修改yum的默认解释器
  sed -i 's,#!/usr/bin/python,#!/usr/bin/python2,g' /usr/bin/yum
  #修改gnome-tweak-tool
  [ -f /usr/bin/gnome-tweak-tool ] && sed -i 's,#!/usr/bin/python,#!/usr/bin/python2,g' /usr/bin/gnome-tweak-tool
  #修改urlgrabber
  [ -f /usr/libexec/urlgrabber-ext-down ] && ed -i 's,#!/usr/bin/python,#!/usr/bin/python2,g' /usr/libexec/urlgrabber-ext-down
  #测试
  python --version |grep 3.6.0
  [ $? -eq 0 ] || test_exit "安装失败,请查看脚本" "Installation failed, please check the script"
    #完成
    clear
  echo "python" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install}/${python_dir}
python2的默认链接存放/usr/bin/python.back
当前默认python解释器为python3的"
  else
    echo "install ok
Installation directory: ${install}/${python_dir}
The default link for python2 is /usr/bin/python.back
The current default python interpreter is python3"
  fi
}
remove_python() {
  rm -rf ${install_dir}/${python_dir}
  rm -rf /usr/bin/python
  rm -rf /usr/bin/python3
  mv /usr/bin/python.back /usr/bin/python
  test_remove python
  [ "$language" == "cn" ] && echo "python卸载完成!" || echo "Python uninstall complete"
}
info_python() {
  if [ "$language" == "cn" ];then
    echo "名字:python
版本:3.6
介绍:安装python3.6
类型:语言"
  else
    echo "Name:python
Version:3.6
Introduce:Install python3.6
Type: Language"
  fi
}

十、Redis

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
redis_dir=redis
get_redis() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/redis-3.2.9.tar.gz" "0969f42d1675a44d137f0a2e05f9ebd2"
}
install_redis() {
    #检测目录
  remove_redis
    test_dir $redis_dir
    #安装服务
    get_redis
    tar -xf package/redis-3.2.9.tar.gz
    mv redis ${install_dir}/${redis_dir}
    #环境变量
    echo 'PATH=$PATH':${install_dir}/${redis_dir}/bin >> /etc/profile
    #测试
    source /etc/profile
    which redis-cli
    [ $? -eq 0 ] || test_exit "Installation failed, please check the script" 
    clear
  echo "redis" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${redis_dir}
日志目录:${log_dir}/${redis_dir}
环境变量设置完成"
  else
    echo "install ok
Installation manual:${install_dir}/${redis_dir}
Log directory:${log_dir}/${redis_dir}
Environment variable setting completed"
  fi
}
remove_redis() {
  rm -rf ${install_dir}/${redis_dir}
  hang=`grep -n 'PATH=$PATH':${install_dir}/${redis_dir}/bin /etc/profile | awk -F':' '{print $1}'`
  [ ! $hang ] || sed -i "${hang} d" /etc/profile
  test_remove redis
  [ "$language" == "cn" ] && echo "redis卸载完成!" || echo "redis Uninstall completed!"
}
info_redis() {
  if [ "$language" == "cn" ];then
    echo "名字:redis
版本:3.2.9
介绍:开源的内存数据库,常用作缓存或者消息队列。
类型:服务"
  else
    echo "Name:redis
Version:3.2.9
Introduce:Open source memory database, often used as a cache or message queue.
Type: server"
  fi
}

十一、redis的web端管理工具

#!/usr/bin/env bash
#redis-browser,redis的可视化工具
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录
#log_dir=
#服务目录名
redis_browser_dir=redis-browser
#填写redis的主机名节点,最少2个
cluster_name=(service1 service2 service3)
cluster_ip=(192.168.2.108:7000 192.168.2.108:7002 192.168.2.108:7004) 
#redis_browser的端口
port=1212
#redis_browser监听
listen=0.0.0.0
get_redis_browser() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/redis-4.0.1.gem" "a4b74c19159531d0aa4c3bf4539b1743"
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/redis-browser-0.5.1.gem" "dbe6a5e711dacbca46e68b10466d9da4"
}
install_redis_browser() {
  remove_redis_browser
    test_dir $redis_browser_dir
    test_install gem
  test_rely nodejs ruby
    get_redis_browser
    gem update —system
    gem sources —add https://gems.ruby-china.org/ —remove https://rubygems.org/
    gem sources -l
    gem install material/redis-4.0.1.gem
    gem install material/redis-browser-0.5.1.gem
    d=1 #名字,从第2个起
    echo "connections:" >> ${install_dir}/${redis_browser_dir}/config.yml
    for i in `echo ${cluster_ip[*]}`
    do
        if [ "$i" == "${cluster_ip[0]}" ];then #第一个跳过做默认
            continue
        fi
        b=`echo $i | awk -F':' '{print $1}'` 
        c=`echo $i | awk -F':' '{print $2}'`
        cp material/redis_browser.yuml ./one #复制一份格式文件做修改
        sed -i "1s/service3:/${cluster_name[$d]}" one
        sed -i "2s/host: 192.168.1.3/host: $b/g" one
        sed -i "3s/port: 7004/port: $c/g" one
        sed -i "5s,url_db_0: redis://192.168.1.3:7004/0,url_db_0: redis://${i}/0,g" one
        cat one >> ${install_dir}/${redis_browser_dir}/config.yml
        let d++
        rm -rf one
    done
    #启动脚本
    test_bin man-redis-browser
    sed -i "2a port=${port}" $command
    sed -i "3a listen=${listen}" $command
    sed -i "4a install_dir=$install_dir" $command
    sed -i "5a log_dir=$log_dir" $command
    sed -i "6a redis_browser_dir=$redis_browser_dir" $command
    sed -i "7a one=${cluster_ip}" $command
    #测试
    clear
  echo "redis-browser" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${redis_browser_dir}
日志目录:${log_dir}/${redis_browser_dir}
启动:man-redis-browser start
访问:curl http://127.0.0.1:${port}"
  else
    echo "install ok
Installation manual:${install_dir}/${redis_browser_dir}
Log directory:${log_dir}/${redis_browser_dir}
Start:man-redis-browser start
Access:curl http://127.0.0.1:${port}"
  fi
}
remove_redis_browser() {
  rm -rf ${install_dir}/${redis_browser_dir}
  rm -rf /usr/local/bin/man-redis-browser
  test_remove redis-browser
  [ "$language" == "cn" ] && echo "redis-browser卸载完成!" || echo "redis-browser Uninstall completed!"
}
info_redis_browser() {
  if [ "$language" == "cn" ];then
    echo "名字:redis-browser
版本:0.5.1
介绍:redis的web端管理工具
类型:服务"
  else
    echo "Name:redis-browser
Version:0.5.1
Introduce:Redis web-side management tool
Type: server"
  fi
}

十二、配置redis集群

#!/usr/bin/env bash
#此脚本将创建集群,需要设置端口
#[使用设置]
#所有要加入集群的节点,前一半节点皆为主
cluster_ip="127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005"
#默认1主1从,设置2就是1主2从
node=1
source script/redis.sh
get_redis_cluster() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/redis-4.0.1.gem" "a4b74c19159531d0aa4c3bf4539b1743"
}
install_redis_cluster() {  
  remove_redis_cluster
    [ -f ${install_dir}/${redis_dir}/src/redis-trib.rb ] || test_exit "请先安装redis"
    get_redis_cluster
    test_install ruby-devel rubygems rpm-build
    test_rely ruby
    gem install package/redis-4.0.1.gem
    #启动
    ${install_dir}/${redis_dir}/src/redis-trib.rb create --replicas ${node} ${cluster_ip}
}
remove_redis_cluster() {
  [ "$language" == "cn" ] && echo "redis-cluster无法卸载,需要每个节点删除存储文件再重新创建集群!" || echo "Redis-cluster cannot be unloaded. Each node needs to delete the storage file and re-create the cluster!"
}
info_redis_cluster() {
  if [ "$language" == "cn" ];then
    echo "名字:redis-cluster
版本:redis
介绍:配置redis集群,需要先创建多个节点
类型:服务"
  else
    echo "Name:redis-cluster
Version:redis
Introduce:Configure a redis cluster, you need to create multiple nodes first
Type: server"
  fi
}

十三、配置redis多实例

#!/usr/bin/env bash
#启动多个端口
#[使用设置]
#将安装如下端口实例
port=(6379)
#监听ip
listen=0.0.0.0
#加载依赖
source script/redis.sh
get_redis_port() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_redis_port() {
  remove_redis_port
    [ -d ${install_dir}/${redis_dir} ] || test_exit "请先安装redis"
    get_redis_port
    for i in `echo ${port[*]}`
    do
        command=/usr/local/bin/man-redis${i} #创建单独管理脚本
        if [ ! -f $command ];then
            cp material/man-redis $command
            sed -i "2a port=${i}" $command
            sed -i "3a install_dir=${install_dir}" $command
            sed -i "4a log_dir=${log_dir}" $command
            sed -i "5a redis_dir=${redis_dir}" $command
            chmod +x $command
        else
            continue #如果管理脚本存在,则跳过这个端口
        fi
        conf=${install_dir}/${redis_dir}/cluster/${i}/${i}.conf
        mkdir -p ${install_dir}/${redis_dir}/cluster/${i}
        cp material/redis_7000.conf $conf
        sed -i "s/^bind 127.0.0.1/bind ${listen}/g" $conf
        sed -i "/^port/cport ${i}" $conf
        sed -i "/^cluster-config-file/ccluster-config-file nodes_${i}.conf" $conf
        sed -i "/^pidfile/cpidfile redis_${i}.pid" $conf
        sed -i "/^dir/cdir ${install_dir}/${redis_dir}/cluster/${i}" $conf 
    done
    #创建总管理脚本
    echo '#!/bin/bash
for i in `ls /usr/local/bin/man-redis*`
do  
    [ "$i" == "/usr/local/bin/man-redis" ] && continue || $i $1
done' >> /usr/local/bin/man-redis
    chmod +x /usr/local/bin/man-redis
    clear
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${redis_dir}
日志目录:${log_dir}/${redis_dir}
启动:man-redis start"
  else
    echo "install ok
Installation manual:${install_dir}/${redis_dir}
Log directory:${log_dir}/${redis_dir}
Start:man-redis start"
  fi
}
remove_redis_port() {
  rm -rf /usr/local/bin/man-redis
  for i in `echo ${port[*]}`
    do
    rm -rf /usr/local/bin/man-redis${i}
    rm -rf ${install_dir}/${redis_dir}/cluster/${i}
    [ "$language" == "cn" ] && echo "节点${i}卸载完成!" || echo "node${i} Uninstall completed!"
  done
}
info_redis_port() {
  if [ "$language" == "cn" ];then
    echo "名字:redis-port
版本:redis
介绍:配置redis多实例
类型:服务"
  else
    echo "Name:redis-port
Version:redis
Introduce:Configure redis multi-instance
Type: server"
  fi
}

十四、Ruby

#!/usr/bin/env bash
get_ruby() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_ruby() {
    remove_ruby
    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
  \curl -sSL https://get.rvm.io | bash -s stable
  [ -f /etc/profile.d/rvm.sh ] || test_exit "rvm下载失败,请重新安装ruby" "Rvm download failed, please re-install ruby"
  #设置环境变量
    echo source /etc/profile.d/rvm.sh >> ~/.bashrc
    source ~/.bashrc
    echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
    #安装
    rvm install 2.4.1
    rvm use 2.4.1 --default
  #测试
  rvm use 2.4.1 --default
  [ $? -eq 0 ] || test_exit "ruby安装失败,请检查脚本" "Ruby installation failed, please check the script"
    clear
  echo "ruby" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/rvm
环境变量设置完成"
  else
    echo "install ok
Installation manual:/usr/local/rvm
Environment variable setting completed"
  fi
}
remove_ruby() {
  [ "$language" == "cn" ] && echo "当前不支持卸载" || echo "Does not currently support uninstallation"
}
info_ruby() {
  if [ "$language" == "cn" ];then
    echo "名字:ruby
版本:2.4.1
介绍:Ruby,一种简单快捷的面向对象(面向对象程序设计)脚本语言
类型:语言"
  else
    echo "Name:ruby
Version:2.4.1
Introduce:Ruby, a simple and fast object-oriented (object-oriented programming) scripting language
Type: Language"
  fi
}

十五、SQLite

#!/usr/bin/env bash
get_sqlite() {
    test_package http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/sqlite-snapshot-201803072139.tar.gz b2447f8009fba42eabaeef6fcf208e2c
}
install_sqlite() {
    #检测目录
  remove_sqlite
    test_dir $sqlite_dir
    test_install gcc cmake
    #安装服务
    get_sqlite
    tar -xf package/sqlite-snapshot-201803072139.tar.gz
    cd sqlite-snapshot-201803072139
    ./configure
    make && make install
    #测试
    sqlite3 -version
    [ $? -eq 0 ] || test_exit "安装错误,请检查脚本" "Installation error, please check the script"
    clear
    echo "sqlite" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${sqlite_dir}
环境变量设置完成"
  else
    echo "install ok
Installation manual:${install_dir}/${sqlite_dir}
Environment variable setting completed"
  fi
}
remove_sqlite() {
  [ "$language" == "cn" ] && echo "当前不支持卸载" || echo "Does not currently support uninstallation"
}
info_sqlite() {
  if [ "$language" == "cn" ];then
    echo "名字:sqlite
版本:3.23.0
介绍:SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统
类型:服务"
  else
    echo "Name:sqlite
Version:6.39
Introduce:SQLite, a lightweight database, is a relational database management system that adheres to ACID
Type: server"
  fi
}

十六、俄罗斯方块小游戏

#!/usr/bin/env bash
get_tetris() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_tetris() {
  remove_tetris
    test_bin tetris
    clear
  echo "tetris" >> conf/installed.txt
    if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/tetris
启动:tetris"
  else
    echo "install ok
Installation manual:/usr/local/bin/tetris
Start:tetris"
  fi
}
remove_tetris() {
  rm -rf /usr/local/bin/tetris
  test_remove tetris
  [ "$language" == "cn" ] && echo "tetris卸载完成!" || echo "tetris Uninstall completed!"
}
info_tetris() {
  if [ "$language" == "cn" ];then
    echo "名字:tetris
版本:1.0
介绍:俄罗斯方块小游戏
类型:休闲游戏"
  else
    echo "Name:tetris
Version:1.0
Introduce:Tetris Games
Type: casual games"
  fi
}

十七、ZooKeeper

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
zookeeper_dir=zookeeper
get_zookeeper() {
    test_package http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/zookeeper-3.5.2-alpha.tar.gz adc27d412f283c0dc6ec9d08e30f4ec0
}
install_zookeeper() {
    #检测目录
  remove_zookeeper
    test_dir $zookeeper_dir
    test_rely jdk
    get_zookeeper
    tar -xf   package/zookeeper-3.5.2-alpha.tar.gz
    mv zookeeper-3.5.2-alpha ${install_dir}/${zookeeper_dir}
    #测试
    clear
  echo "zookeeper" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${zookeeper_dir}
日志目录:${log_dir}/${zookeeper_dir}"
  else
    echo "install ok
Installation manual:${install_dir}/${zookeeper_dir}
Log directory:${log_dir}/${zookeeper_dir}"
  fi
}
remove_zookeeper() {
  rm -rf ${install_dir}/${zookeeper_dir}
  test_remove zookeeper
  [ "$language" == "cn" ] && echo "zookeeper卸载完成!" || echo "zookeeper Uninstall completed!"
}
info_zookeeper() {
  if [ "$language" == "cn" ];then
    echo "名字:zookeeper
版本:3.5.2
介绍:ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务
类型:服务"
  else
    echo "Name:zookeeper
Version:3.5.2
Introduce:ZooKeeper is a distributed, open source distributed application coordination service
Type: server"
  fi
}

十八、配置zookeeper集群

#!/usr/bin/env bash
#设置完毕后,再每个节点上安装此脚本
#[使用设置]
#集群所有节点的ip
cluster_ip=(192.168.2.108 192.168.2.109)
#端口
port=2181
source script/zookeeper.sh
get_zookeeper_cluster() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_zookeeper_cluster() {
  remove_zookeeper_cluster
    [ -f ${install_dir}/${zookeeper_dir}/conf/zoo.cfg.dynamic ] || test_exit "请先安装zookeeper"
    #配置文件
    echo "clientPort=${port}
dataDir=${install_dir}/${zookeeper_dir}/data
syncLimit=5
tickTime=2000
initLimit=10
dataLogDir=${install_dir}/${zookeeper_dir}
dynamicConfigFile=${install_dir}/${zookeeper_dir}/conf/zoo.cfg.dynamic" > ${install_dir}/${zookeeper_dir}/conf/zoo.cfg
    #输出配置
    rm -rf  ${install_dir}/${zookeeper_dir}/conf/zoo.cfg.dynamic
    d=1
    for i in `echo ${cluster_ip[*]}`
    do
        echo "server.${d}=${i}:2888:3888" >> ${install_dir}/${zookeeper_dir}/conf/zoo.cfg.dynamic
        let d++
    done
    #id号
    mkdir ${install_dir}/${zookeeper_dir}/data
    id=`process_id`
    echo "$id" > ${install_dir}/${zookeeper_dir}/data/myid
    #监听ipv4,默认ipv6
    sed -i '150c "-Dzookeeper.log.file=${ZOO_LOG_FILE}" "-Djava.net.preferIPv4Stack=true"  "-Dzookeeper.root.logger=${ZOO_LOG4J_PROP}" \/' ${install_dir}/${zookeeper_dir}/bin/zkServer.sh
    #脚本
    command=/usr/local/bin/man-zookeeper-cluster
    rm -rf $command
    echo "#!/bin/bash
${install_dir}/${zookeeper_dir}/bin/zkServer.sh" '$1' > $command
    chmod +x $command
    clear
  echo "zookeeper-cluster" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${zookeeper_dir}
日志目录:${log_dir}/${zookeeper_dir}
启动:man-zookeeper-cluster start"
  else
    echo "install ok
Installation manual:${install_dir}/${zookeeper_dir}
Log directory:${log_dir}/${zookeeper_dir}
Start:man-zookeeper-cluster start"
  fi
}
remove_zookeeper_cluster() {
  man-zookeeper-cluster stop
  rm -rf /usr/local/bin/man-zookeeper-cluster
  test_remove zookeeper-cluster
  [ "$language" == "cn" ] && echo "zookeeper_cluster卸载完成!" || echo "zookeeper_cluster Uninstall completed!"
}
info_zookeeper_cluster() {
  if [ "$language" == "cn" ];then
    echo "名字:zookeeper_cluster
版本:zookeeper
介绍:配置zookeeper集群
类型:服务"
  else
    echo "Name:zookeeper_cluster
Version:zookeeper
Introduce:Configure the zookeeper cluster
Type: server"
  fi
}

十九、系统管理Calibre

#!/usr/bin/env bash
get_calibre() {
  [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_calibre() {
  remove_calibre
  test_rely chinese-font
  test_install libGL.so.1 mesa-libGL Mesa-libGL-devel libXcomposit qt5-qtquickcontrols qt5-qtdeclarative-devel
  #安装包
  wget -nv -O- https://download.calibre-ebook.com/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"
  #测试
  ebook-convert --version
  [ $? -eq 0 ] || test_exit "安装失败,请检查脚本" "Installation failed, please check the script"
  ebook-convert conf/installed.txt installed.pdf
  [ -f installed.pdf ] || test_exit "生成pdf失败,请检查脚本" "Failed to generate pdf, please check the script"
    #完成
    clear
  echo "calibre" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
ebook-convert a.txt a.pdf 方式生成pdf文件"
  else
    echo "install ok
Ebook-convert a.txt a.pdf method to generate pdf file"
  fi
}
remove_calibre() {
  [ "$language" == "cn" ] && echo "calibre当前无法卸载!" || echo "calibre cannot be uninstalled at this time!"
}
info_calibre() {
  if [ "$language" == "cn" ];then
    echo "名字:calibre
版本:3.18.0
介绍:Calibre是基于python的电子书制作软件,可导出PDF、EPUB、MOBI、Word格式电子书。
类型:系统管理"
  else
    echo "Name:calibre
Version:0
Introduce:Calibre is a python-based e-book making software that exports PDF, EPUB, MOBI, and Word format e-books.
Type: System Management"
  fi
}

二十、抽卡人生shell版本

#!/usr/bin/env bash
get_card_life() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_card_life() {
  remove_card_life
    test_bin card-life
    clear
  echo "card-life" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/card-life
启动:card-life"
  else
    echo "install ok
Installation manual:/usr/local/bin/card-life
Start:card-life"
  fi
}
remove_card_life() {
  rm -rf /usr/local/bin/card-life
  test_remove card-life
  [ "$language" == "cn" ] && echo "card-life卸载完成!" || echo "card-life Uninstall completed!"
}
info_card_life() {
  if [ "$language" == "cn" ];then
    echo "名字:card-life
版本:1.4
介绍:抽卡人生shell版本
类型:卡牌游戏"
  else
    echo "Name:card-life
Version:1.4
Introduce:Draw card life shell version
Type: card game"
  fi
}

二一、查看系统信息

#!/usr/bin/env bash
get_cha() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_cha() {
  remove_cha  
    test_bin cha
    clear
  echo "cha" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/cha
启动:cha -c"
  else
    echo "install ok
Installation manual:/usr/local/bin/cha
Start:cha"
  fi
}
remove_cha() {
  rm -rf /usr/local/bin/cha
  test_remove cha
  [ "$language" == "cn" ] && echo "cha卸载完成!" || echo "cha Uninstall completed!"
}
info_cha() {
  if [ "$language" == "cn" ];then
    echo "名字:cha
版本:1.0
介绍:查看系统信息
类型:系统管理"
  else
    echo "Name:cha
Version:1.0
Introduce:Check system information
Type: System Management"
  fi
}

二二、安装中文字体

#!/usr/bin/env bash
get_chinese_font() {
    test_package https://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/simhei.ttf 5b4ceb24c33f4fbfecce7bd024007876
  test_package https://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/simsun.ttc bc9c5051b849545eaecb9caeed711d79
}
install_chinese_font() {
  remove_chinese_font
  test_install fontconfig ttmkfdir
  mkdir -p /usr/share/fonts/chinese
  #放字体到文件夹
  get_chinese_font
  cp package/simhei.ttf /usr/shared/fonts/chinese/
  cp simsun.ttc /usr/shared/fonts/chinese/
  chmod -R 755 /usr/shared/fonts/chinese
  #将字体的文件夹位置写到配置文件
    ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
  sed -i '28a <dir>/usr/shared/fonts/chinese</dir>' /etc/fonts/fonts.conf
  fc-cache
  fc-list
    #完成
    clear
  echo "chinese-font" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
fc-list 查看是否有中文字体"
  else
    echo "install ok
fc-list See if there is a Chinese font"
  fi
}
remove_chinese_font() {
  [ "$language" == "cn" ] && echo "chinese-font当前无法卸载!" || echo "Chinese-font cannot be uninstalled at this time!"
}
info_chinese_font() {
  if [ "$language" == "cn" ];then
    echo "名字:chinese-font
版本:0
介绍:安装中文字体
类型:系统管理"
  else
    echo "Name:chinese-font
Version:0
Introduce:Install Chinese font
Type: System Management"
  fi
}

二三、显示字符时间

#!/usr/bin/env bash
get_clocks() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_clocks() {
  remove_clocks
    test_bin clocks
    clear
  echo "clocks" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/clocks
启动:clocks"
  else
    echo "install ok
Installation manual:/usr/local/bin/clocks
Start:clocks"
  fi
}
remove_clocks() {
  rm -rf /usr/local/bin/clocks
  test_remove clocks
  [ "$language" == "cn" ] && echo "clocks卸载完成!" || echo "clocks Uninstall completed!"
}
info_clocks() {
  if [ "$language" == "cn" ];then
    echo "名字:clocks
版本:1.0
介绍:显示字符时间
类型:字符游戏"
  else
    echo "Name:clocks
Version:1.0
Introduce:Display character time
Type: Character game"
  fi
}

二四、glibc

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#服务目录名
glibc_dir=glibc-2.14
get_glibc() {
    test_package http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/glibc-2.14.tar.gz 4657de6717293806442f4fdf72be821b
}
install_glibc() {
    #检测目录
  remove_glibc
    test_dir $glibc_dir
    test_install gcc cmake
    #安装服务
    get_glibc
    tar -xf package/glibc-2.14.tar.gz
    cd glibc-2.14
    mkdir build
    cd build
    ../configure --prefix=${install_dir}/${glibc_dir}
    make && make install
    cd ..
    cd ..
    rm -rf glibc-2.14
    #清除软连接
    rm -rf /lib64/libc.so.6
    ln -s ${install_dir}/${glibc_dir}/lib/libc-2.14.so /lib64/libc.so.6
    clear
  echo "glibc" >> conf/installed.txt
    if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${glibc_dir}"
  else
    echo "install ok
Installation manual:${install_dir}/${glibc_dir}"
  fi
}
remove_glibc() {
  [ "$language" == "cn" ] && echo "暂时无法卸载!" || echo "Unable to uninstall now!"
}
info_glibc() {
  if [ "$language" == "cn" ];then
    echo "名字:glibc
版本:2.14
介绍:glibc是GNU发布的libc库,即c运行库
类型:系统文件"
  else
    echo "Name:glibc
Version:2.14
Introduce:Glibc is the libc library released by GNU, ie the c runtime library
Type: System Files"
  fi
}

二五、打boss小游戏

#!/usr/bin/env bash
get_hit_boss() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_hit_boss() {
  remove_hit_boss
    test_bin hit-boss
    clear
  echo "hit-boss" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/hit-boss
启动:hit-boss"
  else
    echo "install ok
Start:hit-boss"
  fi
}
remove_hit_boss() {
  rm -rf /usr/local/bin/hit-boss
  test_remove hit-boss
  [ "$language" == "cn" ] && echo "hit-boss卸载完成!" || echo "hit-boss Uninstall completed!"
}
info_hit_boss() {
  if [ "$language" == "cn" ];then
    echo "名字:hit-boss
版本:1.2
介绍:打boss小游戏,你将挑战大法师安东尼
类型:字符游戏"
  else
    echo "Name:hit-boss
Version:1.2
Introduce:Play boss game and you will challenge Archmage Anthony
Type: Character game"
  fi
}

二六、查询ip地址所在地

#!/usr/bin/env bash
get_ip_location() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_ip_location() {
  remove_ip_location
    test_bin ip-location
    clear
  echo "ip-location" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:/usr/local/bin/ip-location
启动:ip-location"
  else
    echo "install ok
Start:ip-location"
  fi
}
remove_ip_location() {
  rm -rf /usr/local/bin/ip-location
  test_remove ip-location
  [ "$language" == "cn" ] && echo "ip-location卸载完成!" || echo "ip-location Uninstall completed!"
}
info_ip_location() {
  if [ "$language" == "cn" ];then
    echo "名字:ip-location
版本:1.2
介绍:查询ip地址所在地
类型:系统管理"
  else
    echo "Name:ip-location
Version:1.2
Introduce:Query ip address location
Type: System Management"
  fi
}

二七、JDK

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#服务目录名
jdk_dir=jdk-1.8
get_jdk() {
    test_package http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/jdk-8u152-linux-x64.tar.gz adfb92ae19a18b64d96fcd9a3e7bfb47
}
install_jdk() {
    remove_jdk
    test_dir $jdk_dir
    yum -y remove java-1.8.0-openjdk
    #安装服务
    get_jdk
    tar -xf package/jdk-8u152-linux-x64.tar.gz
    mv jdk1.8.0_152 ${install_dir}/${jdk_dir}
    #环境变量
    echo "export JAVA_HOME=${install_dir}/${jdk_dir}" >> /etc/profile
    echo "export JRE_HOME=${install_dir}/${jdk_dir}/jre" >> /etc/profile
    echo 'export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib' >> /etc/profile
    echo 'export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH' >> /etc/profile
    source /etc/profile
    #测试
    java -version
    [ $? -eq 0 ] || test_exit "安装失败,请检查脚本" "Installation failed, please check the script"
    clear
  echo "jdk" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${jdk_dir}
环境变量设置完成"
  else
    echo "install ok
Installation manual:${install_dir}/${jdk_dir}
Environment variable setting completed"
  fi
}
remove_jdk() {
  rm -rf ${install_dir}/${jdk_dir}
  sed -i '/^export JAVA_HOME=/d' /etc/profile
    sed -i '/^export JRE_HOME=/d'  /etc/profile
    sed -i '/^export CLASSPATH=/d' /etc/profile
    sed -i '/^export PATH=$JAVA_HOME/d'  /etc/profile
  [ "$language" == "cn" ] && echo "卸载完成" || echo "Uninstall completed"
}
info_jdk() {
  if [ "$language" == "cn" ];then
    echo "名字:jdk
版本:1.8
介绍:JDK是 Java 语言的软件开发工具包
类型:语言"
  else
    echo "Name:jdk
Version:1.8
Introduce:JDK is a Java language software development kit
Type: Language"
  fi
}

二八、持续与集成工具

#!/usr/bin/env bash
#jenkins基本环境
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
jenkins_dir=jenkins
#开启的端口号
port=8080
#默认监听所有
listen=0.0.0.0
get_jenkins() {
    test_package http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/jenkins.war 08386ff41dbf7dd069c750f3484cc140
}
install_jenkins() {
  remove_jenkins
    test_dir $jenkins_dir
    #安装依赖和包
    test_rely jdk
    get_jenkins
    mkdir ${install_dir}/${jenkins_dir}
    cp package/jenkins.war ${install_dir}/${jenkins_dir}/
    #配置启动脚本
    test_bin man-jenkins
    sed -i "2a port=$port" $command
    sed -i "3a listen=$listen" $command
    sed -i "4a install_dir=$install_dir" $command
    sed -i "5a log_dir=$log_dir" $command
    sed -i "6a jenkins_dir=$jenkins_dir" $command
    #完成
    clear
  echo "jenkins" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${jenkins_dir}
日志目录:${log_dir}/${jenkins_dir}
启动:man-jenkins start
访问:curl http://127.0.0.1:${port}"
  else
    echo "install ok
Installation manual:${install_dir}/${jenkins_dir}
Log directory:${log_dir}/${jenkins_dir}
Start:man-jenkins start
Access:curl http://127.0.0.1:${port}"
  fi
}
remove_jenkins() {
  rm -rf /usr/local/bin/man-jenkins
  rm -rf ${install_dir}/${jenkins_dir}
  test_remove jenkins
  [ "$language" == "cn" ] && echo "jenkins卸载完成!" || echo "jenkins Uninstall completed!"
}
info_jenkins() {
  if [ "$language" == "cn" ];then
    echo "名字:jenkins
版本:2.104
介绍:持续与集成工具
类型:服务"
  else
    echo "Name:jenkins
Version:2.104
Introduce:Continuous and integrated tools
Type: server"
  fi
}

二八、Kafka

#!/usr/bin/env bash
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志目录
#log_dir=
#服务目录名
kafka_dir=kafka
get_kafka() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/kafka_2.12-0.10.2.1.tgz" "fab4b35ba536938144489105cb0091e0"
}
install_kafka() {
  remove_kafka
    test_dir $kafka_dir
  test_rely jdk
    #安装依赖和包
    get_kafka
    tar -xf package/kafka_2.12-0.10.2.1.tgz
    mv kafka_2.12-0.10.2.1 ${install_dir}/${kafka_dir}
    #完成
    clear
  echo "kafka" >> conf/installed.txt
  if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${kafka_dir}"
  else
    echo "install ok
Installation manual:${install_dir}/${jenkins_dir}"
  fi
}
remove_kafka() {
  rm -rf ${install_dir}/${kafka_dir}
  test_remove kafka
  [ "$language" == "cn" ] && echo "kafka卸载完成!" || echo "kafka Uninstall completed!"
}
info_kafka() {
  if [ "$language" == "cn" ];then
    echo "名字:kafka
版本:2.12
介绍:Kafka是由Apache软件基金会开发的一个开源流处理平台
类型:服务"
  else
    echo "Name:kafka
Version:2.12
Introduce:Kafka is an open source stream processing platform developed by the Apache Software Foundation
Type: server"
  fi
}

二九、配置kafka集群

#!/usr/bin/env bash
#[使用设置]
#zookeeper集群的ip,包括他自己
cluster_ip=(192.168.2.108:2181 192.168.2.109:2181)
#端口
port=9092
#监听地址,如果填写localhost,则监听本地
listen=localhost
#如果非sai安装的,修改被加载脚本
source script/kafka.sh
get_kafka_cluster() {
    [ "$language" == "cn" ] && echo "不用下载" || echo "Do not download"
}
install_kafka_cluster() {
    #检测依赖
  remove_kafka_cluster
  conf=${install_dir}/${kafka_dir}/config/server.properties
    [ -f $conf ] || test_exit "请先安装kakfa" "Please install kafka first"
    #修改配置
    rm -rf $conf
    cp material/server.properties $conf
    id=`process_id`
    ip=`process_ip`
    #算出地址字符串
    for i in `echo ${cluster_ip[*]}` 
    do
        if [ "$i" == "${cluster_ip[0]}" ];then #刨去第一个,不然最前面会多个,
            cluster_dizhi=`echo $i`
        else
            cluster_dizhi=`echo ${cluster_dizhi},$i`
        fi
    done
    sed -i "21s/broker.id=1/broker.id=${id}/g" $conf
    sed -i "35s/port=9092/port=${port}/g" $conf
    if [ "$listen" == "localhost" ];then
        sed -i "36s/advertised.host.name=192.168.100.11/advertised.host.name=${ip}/g" $conf
    else
        sed -i "36s/advertised.host.name=192.168.100.11/advertised.host.name=${listen}/g" $conf
    fi
    sed -i "64s,log.dirs=/ops/log/kafka,log.dirs=${log_dir}/${kafka_dir},g" $conf
    sed -i "120s/zookeeper.connect=B-S-01:2181/zookeeper.connect=${cluster_dizhi}/g" $conf
    #创建脚本
    test_bin man-kafka-cluster
    sed -i "2a port=${port}" $command
    sed -i "3a dir=${install_dir}/${kafka_dir}" $command
  clear
  echo "kafka-cluster" >> conf/installed.txt
    if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${kafka_dir}
日志目录:${log_dir}/${kafka_dir}
启动:man-kafka-cluster start"
  else
    echo "install ok
Installation manual:${install_dir}/${kafka_dir}
Log directory:${log_dir}/${kafka_dir}
Start:man-kafka-cluster start"
  fi
}
remove_kafka_cluster() {
  rm -rf /usr/local/bin/man-kafka-cluster
  test_remove kafka-cluster
  [ "$language" == "cn" ] && echo "kafka-cluster卸载完成!" || echo "kafka-cluster Uninstall completed!"
}
info_kafka_cluster() {
  if [ "$language" == "cn" ];then
    echo "名字:kafka-cluster
版本:kafka
介绍:配置kafka集群
类型:服务"
  else
    echo "Name:kafka-cluster
Version:kafka
Introduce:Configure kafka cluster
Type: server"
  fi
}

三十、kafka的web端管理工具

#!/usr/bin/env bash
#kafka-manager,可以用来监控kafka
#[使用设置]
#主目录,相当于/usr/local
#install_dir=
#日志主目录,相当于/var/log
#log_dir=
#服务目录名
kafka_manager_dir=kafka-manager
#zookeeper集群地址用,分隔
cluster_ip="192.168.2.108:2181,192.168.2.109:2181"
#启动端口
port=9000
get_kafka_manager() {
    test_package "http://shell-auto-install.oss-cn-zhangjiakou.aliyuncs.com/package/kafka-manager-1.3.3.14.zip" "297da17fa75969bc66207e991118b35d"
}
install_kafka_manager() {
  remove_kafka_manager
    test_install unzip
    test_dir ${kafka_manager_dir}
    #安装包
    get_kafka_manager
    unzip package/kafka-manager-1.3.3.14.zip
    mv kafka-manager-1.3.3.14 ${install_dir}/${kafka_manager_dir}
    #修改配置文件
    conf=${install_dir}/${kafka_manager_dir}/conf/application.conf
    a=kafka-manager.zkhosts='"'${cluster_ip}'"'
    sed -i "23c $a" $conf
    #创建管理脚本
    test_bin man-kafka-manager
    sed -i "2a port=${port}" $command
    sed -i "3a dir=${install_dir}/${kafka_manager_dir}" $command
    sed -i "4a log=${log_dir}/${kafka_manager_dir}" $command
    #完成
    clear
  echo "kafka-manager" >> conf/installed.txt
    if [ "$language" == "cn" ];then
    echo "安装成功
安装目录:${install_dir}/${kafka_manager_dir}
日志目录:${log_dir}/${kafka_manager_dir}
启动:man-kafka-manager start
访问:curl http://127.0.0.1:${port}"
  else
    echo "install ok
Installation manual:${install_dir}/${kafka_manager_dir}
Log directory:${log_dir}/${kafka_manager_dir}
Start:man-kafka-manager start
Access:curl http://127.0.0.1:${port}"
  fi
}
remove_kafka_manager() {
  rm -rf ${install_dir}/${kafka_manager_dir}
  rm -rf /usr/local/bin/man-kafka-manager
  test_remove kafka-manager
  [ "$language" == "cn" ] && echo "kafka_manager卸载完成!" || echo "kafka_manager Uninstall completed!"
}
info_kafka_manager() {
  if [ "$language" == "cn" ];then
    echo "名字:kafka_manager
版本:1.3.3.14
介绍:kafka的web端管理工具
类型:服务"
  else
    echo "Name:kafka_manager
Version:1.3.3.14
Introduce:Kafka web-side management tool
Type: server"
  fi
}
目录
相关文章
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
110 1
|
1月前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
62 2
6种方法打造出色的Shell脚本
|
1月前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
58 1
|
1月前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
49 2
|
2月前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
54 6
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
81 12
|
2月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
72 2
|
3月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
733 2