写点什么

企业常用 shell 脚本汇总

作者:@下一站
  • 2022-12-20
    陕西
  • 本文字数:25856 字

    阅读完需:约 85 分钟

企业常用shell脚本汇总

shell 英文翻译过来是外壳的意思,作为计算机语言来理解可以认为它是操作系统的外壳。我们可以通过 shell 命令来操作和控制操作系统。


shell 是站在内核的基础上编写的一个应用程序,它连接了用户和 Linux 内核,从而让用户能够更加便捷、高效、安全的使用 linux 内核,这其实就是 shell 的本质。


使用专业术语的说法来解释,Shell 其实是一个命令解释器,它通过接受用户输入的 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 loginSupport for grouping hosts in /etc/hosts, need to modify the scriptSupports 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=3306socket=${install_dir}/${mysql_dir}/mysql.sock
[mysqld_multi]mysqld=${install_dir}/${mysql_dir}/bin/mysqld_safemysqladmin=${install_dir}/${mysql_dir}/bin/mysqladminlog=${log_dir}/${mysql_dir}/mysqld_multi.log
[mysqld]user=mysqlbasedir=${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.cnfecho >> /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=utf8socket=${install_dir}/${mysql_dir}/mysql.sock[mysqld]skip-name-resolveport = ${port}socket=${install_dir}/${mysql_dir}/mysql.sockbasedir=${install_dir}/${mysql_dir}datadir=${install_dir}/${mysql_dir}/datamax_connection=200character-set-server=utf8default-storage-engine=INNODBlower_case_table_name=1max_allowed_packet=16Mlog-error=${log_dir}/${mysql_dir}/mysql.logpid-file=${log_dir}/${mysql_dir}/mysql.pidbind-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=mysqlAfter=network.target remote-fs.target nss-lookup.target
[Service]Type=forkingExecStart=${install_dir}/${mysql_dir}/support-files/mysql.server startExecReload=${install_dir}/${mysql_dir}/support-files/mysql.server restartExecStop=${install_dir}/${mysql_dir}/support-files/mysql.server stopPrivateTmp=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)
#监听iplisten=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 $1done' >> /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#设置完毕后,再每个节点上安装此脚本

#[使用设置]
#集群所有节点的ipcluster_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}/datasyncLimit=5tickTime=2000initLimit=10dataLogDir=${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}
复制代码


发布于: 18 小时前阅读数: 15
用户头像

@下一站

关注

懒人 2020-11-22 加入

都是黄泉预约客,何必难为每一天,执念太强,无法豁然。

评论

发布
暂无评论
企业常用shell脚本汇总_企业运维_@下一站_InfoQ写作社区