企业常用 shell 脚本汇总
作者:@下一站
- 2022-12-20 陕西
本文字数:25856 字
阅读完需:约 85 分钟
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 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
}
复制代码
划线
评论
复制
发布于: 18 小时前阅读数: 15
版权声明: 本文为 InfoQ 作者【@下一站】的原创文章。
原文链接:【http://xie.infoq.cn/article/9d39e51ca4b96a02191b83089】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
@下一站
关注
懒人 2020-11-22 加入
都是黄泉预约客,何必难为每一天,执念太强,无法豁然。
评论