每日shell脚本之超级整合程序3.0
本期带来之前的升级版2.0整合脚本程序,学习工作小利器,同时模块化构建方便二次开发。
上图
上源码
#!/usr/bin/bash
# *******************************************#
# * CDDN : M乔木 #
# * qq邮箱 : 2776617348@qq.com #
# * 创建时间 : 2023-12-29 11:40:59 #
# * 解释器 : 这是一个shell脚本 #
# ******************************************##声明函数
function make_ZBA() {clearecho "开始部署Agent..."sleep 1read -p "请输入Server端服务器IP:" AG_IPrpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm &>/dev/nullyum clean all &>/dev/null && yum makecache fast &>/dev/nullyum -y install zabbix-agent &>/dev/nullsed -i '/^Server=127.0.0.1/d' /etc/zabbix/zabbix_agentd.confecho "Server=${AG_IP}" >>/etc/zabbix/zabbix_agentd.confsed -i '/^ServerActive=127.0.0.1/d' /etc/zabbix/zabbix_agentd.confecho "ServerActive=${AG_IP}" >>/etc/zabbix/zabbix_agentd.confagent_H=$(hostname)sed -i '/^Hostname=Zabbix server/d' /etc/zabbix/zabbix_agentd.confecho "Hostname=${agent_H}" >>/etc/zabbix/zabbix_agentd.confecho 'zabbix ALL=(ALL) NOPASSWD: ALL' >>/etc/sudoersecho 'EnableRemoteCommands=1' >>/etc/zabbix/zabbix_agentd.confecho 'LogRemoteCommands=1' >>/etc/zabbix/zabbix_agentd.confsystemctl restart zabbix-agent &>/dev/nullsystemctl enable zabbix-agent &>/dev/nullecho "Agent端已部署完成!Server端为:${AG_IP}"
}
function make_ZBS() {#环境检测clearecho "--------------------------------------------------------"echo "[1]开始检测防火墙Selinux..."f_w=$(systemctl status firewalld | awk '/Active:/{print $2}')s_l=$(getenforce)#判断是否关闭 没关闭就结束运行if [ ${f_w} = "inactive" -a ${s_l} = "Disabled" ]; thenecho "[2]防火墙SeLinux已关闭..."sleep 1echo "[3]正在飞速安装zabbix中..."sleep 1elseecho "[2]防火墙SeLinux未关闭..."systemctl disable firewalld &>/dev/nullsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinuxsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsleep 1echo "[3]正在关闭..."sleep 1echo "[4]防火墙SeLinux已关闭 请重启机器生效..."echo "--------------------------------------------------------"exit 0fi#安装zabbix源rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm &>/dev/null#安装数据库并清理缓存echo '[4]准备安装数据库,全程20秒左右,请耐心等待...'sleep 1echo '[5]开始清理环境...'yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y &>/dev/nulluserdel -r mysql &>/dev/nullrm -rf /etc/my* &>/dev/nullrm -rf /var/lib/mysql &>/dev/nullrm -rf /usr/bin/mysql &>/dev/nullyum -y erase $(rpm -qa | egrep "mysql|mariadb") &>/dev/nullecho '[6]正在下载mysqlyum源...'yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm &>/dev/nullecho '[7]正在安装mysql...'yum install -y mysql-community-server --enablerepo mysql57-community --disablerepo mysql80-community &>/dev/nullyum -y groupinstall "Development Tools" &>/dev/nullecho '[8]正在配置mysql...'yum -y install yum-utils &>/dev/nullyum-config-manager --disable mysql80-community &>/dev/nullyum-config-manager --enable mysql57-community &>/dev/nullecho '[9]正在启动mysql...'systemctl start mysqld &>/dev/nullecho '[10]正在设置密码,请稍后...'num_az=$(awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log)echo 'validate-password=OFF' >>/etc/my.cnfsystemctl restart mysqld &>/dev/nullread -p '请输入新密码:' passwdxmysqladmin -uroot -p"$num_az" password "$passwdx" &>/dev/nullecho "[11]安装完成,密码已设置完成为:$passwdx"echo "[12]密码已保存到/mysql_passwd.txt目录下"echo $passwdx >/mysql_passwd.txtyum clean all &>/dev/null && yum makecache fast &>/dev/null#安装zabbix模块echo "[13]开始安装zabbix..."yum -y install zabbix-server-mysql zabbix-agent zabbix-get zabbix-sender centos-release-scl &>/dev/nullyum -y install yum-utils &>/dev/nullrpm -qa | grep yum-utils &>/dev/nullif [ $? -eq 1 ]; thensleep 1yum -y install yum-utils &>/dev/nullfiyum-config-manager --enable zabbix-frontend &>/dev/nullyum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl centos-release-scl &>/dev/null#建立运行数据库echo "[14]正在建立运行数据库..."mysql -p"${passwdx}" -e 'create database zabbix character set utf8 collate utf8_bin;' &>/dev/nullmysql -p"${passwdx}" -e "create user zabbix@localhost identified by 'admin';" &>/dev/nullmysql -p"${passwdx}" -e 'grant all privileges on zabbix.* to zabbix@localhost;' &>/dev/nullmysql -p"${passwdx}" -e 'set global log_bin_trust_function_creators = 1;' &>/dev/nullmysql -p"${passwdx}" -e 'flush privileges;' &>/dev/nullecho "[15]zabbix登录数据库密码为:admin"echo "zabbix登录数据库密码为:admin" >>/zabbix-mysql.txtzcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p"admin" zabbix 2>/dev/null#关联数据库echo "[16]正在改写相关配置文件..."mysql -p"${passwdx}" -e 'set global log_bin_trust_function_creators = 0;' &>/dev/nullecho "DBHost=localhost" >>/etc/zabbix/zabbix_server.confecho "DBPassword=admin" >>/etc/zabbix/zabbix_server.confecho "DBPort=3306" >>/etc/zabbix/zabbix_server.conf#关联phpsed -i '2s/^#//;3s/^#//' /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.confsed -i '38,118d' /etc/opt/rh/rh-nginx116/nginx/nginx.confsed -i 's/listen.acl_users = apache/listen.acl_users = apache,nginx/' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.confsed -i '25d' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.confecho 'php_value[date.timezone] = Asia/Shanghai' >>/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf#重启服务echo "[17]正在重启相关服务..."systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm &>/dev/nullsystemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm &>/dev/nullecho "[18]zabbix已部署 后续请登录浏览器安装..."echo "--------------------------------------------------------"
}
function Az_docker() {clear#检测防火墙selinuxecho "------------------------------------------------------------"echo "[1]开始检测防火墙SeLinux是否关闭..."sleep 1f_w=$(systemctl status firewalld | awk '/Active:/{print $2}')s_l=$(getenforce)#判断是否关闭 没关闭就结束运行if [ ${f_w} = "inactive" -a ${s_l} = "Disabled" ]; thenecho "[2]防火墙SeLinux已关闭..."sleep 1echo "[3]正在飞速安装docker中..."sleep 1elseecho "[2]防火墙SeLinux未关闭..."systemctl disable firewalld &>/dev/nullsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinuxsed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configsleep 1echo "[3]正在关闭..."sleep 1echo "[4]防火墙SeLinux已关闭 请重启机器生效..."echo "------------------------------------------------------------"exit 0fi#防火墙关了的话就继续开启路由转发echo "[4]正在开启路由转发虚拟网桥..."echo 'net.ipv4.ip_forward =1' >>/etc/sysctl.confecho 'net.bridge.bridge-nf-call-iptables =1' >>/etc/sysctl.confecho 'net.bridge.bridge-nf-call-ip6tables =1' >>/etc/sysctl.confsysctl -p &>/dev/nullsleep 1#防火墙关闭的话就清理docker环境echo "[5]正在清理环境中..."yum -y remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine &>/dev/nullsleep 1echo "[6]开始安装docker依赖..."yum install -y yum-utils device-mapper-persistent-data lvm2 &>/dev/nullsleep 1echo "[7]开始配置阿里docker源..."yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo &>/dev/nullyum clean all &>/dev/null && yum makecache fast &>/dev/nullsleep 1echo "[8]开始安装docker..."yum -y install docker-ce doker-ce-cli containerd.io &>/dev/nullsleep 1echo "[9]开始配置开机自启..."systemctl start docker &>/dev/nullsystemctl enable docker &>/dev/nullsystemctl restart docker &>/dev/nullsleep 1echo "[10]开始配置阿里云镜像加速器..."clearecho "[11]开始建立docker加速器放置目录..."mkdir -p /etc/dockersleep 1echo "[12]开始写入配置..."tee /etc/docker/daemon.json &>/dev/null <<-'EOF'
{"registry-mirrors": ["https://2zwkpj0m.mirror.aliyuncs.com"]
}
EOFsleep 1echo "[13]重新加载system工具..."systemctl daemon-reload &>/dev/nullsleep 1echo "[14]重新启动docker..."systemctl restart docker &>/dev/nullsleep 1echo "[15]阿里云镜像加速器配置完毕!"sleep 1echo "[16]开始拉取基础镜像centos:7..."docker pull centos:7 &>/dev/nullsleep 1echo "[17]已部署docker及第一个基础镜像centos7已配置完毕!"sleep 1echo '[18]开始使用你的一个docker命令体验激动人心的docker吧!'sleep 1echo '[19]docker images:查看已下载镜像'sleep 1echo '[20]docker info:查看docker基本信息'sleep 1echo '[21]docker run -it centos:7 /bin/bash 启动容器'echo "------------------------------------------------------------"
}
function jq_z() {jq_id=$(cat /opt/QMOSjQ/jQ${idjqw}/* | head -1)if [ -z $jq_id ]; then:elseread -p "该资产已注册 是否覆盖[y|n]" jq_numcase $jq_num iny):;;n)echo "重新加载注册界面..."sleep 1jqzh;;*)Rr_QMjqzh;;esacfi
}
function jq_d() {if [ $? -eq 0 ]; then:elseclearecho "该资产还没有注册..."sleep 1echo "请在资产注册信息以后再使用!"sleep 1jqfunfi
}
function jq_f() {jq_fQ=$(ls /opt/ | grep QMOSjQ &>/dev/null && echo 1 || echo 2)case $jq_fQ in1):;;2)clearecho "---------------------------"echo " 检测到环境不支持运行堡垒机"sleep 1echo " 前往堡垒机主界面使用[环境部署]"echo "---------------------------"sleep 1jqfun;;esac
}
function Qc_QM() {clearcat <<EOF
============="已退出程序!"
=============
EOFexit 0
}
function Rr_QM() {clearcat <<EOF
============================="序列号输入错误 稍后将重新运行!"
=============================
EOFsleep 1
}
function w_djs() {cleara=0echo "-------------------------------"read -p "休息一会吧!身体最重要[单位s/秒]:" w_numwhile [ $a -lt $w_num ]; dolet a++echo "[${a}]已休息:${a}秒"sleep 1doneecho "-------------------------------"echo "本次共休息:${a}秒"
}
function make_redis() {#自动化部署Redisclearecho "----------------------------------------------------------------------------"DATA=$(ls / | grep data)if [ -z $DATA ]; thenecho "[1]检查是否下载wget..."yum -y install wget &>/dev/nullecho "[2]创建放置redis目录..."mkdir -p /data/appecho "[3]进入工作目录..."cd /data/appecho "[4]下载redis..."wget http://download.redis.io/releases/redis-5.0.10.tar.gz &>/dev/nullecho '[5]解压redis...'tar xzf redis-5.0.10.tar.gz &>/dev/nullecho '[6]重命名redis...'mv redis-5.0.10/ redisecho '[7]下载编译工具...'cd redis/ && yum install -y gcc make &>/dev/nullecho "[8]安装redis..."make &>/dev/nullcd /data/app/redisecho "[9]备份redis配置文件..."cp redis.conf redis.conf.backupecho "[10]开始修改配置文件..."sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' redis.confsed -i '/^dir/d' redis.confecho 'dir /data/app/redis/data' >>redis.confsed -i '/^logfile/d' redis.confecho 'logfile /var/log/redis.log' >>redis.confsed -i '/^daemonize/d' redis.confecho 'daemonize yes' >>redis.confmkdir /data/app/redis/datatouch /var/log/redis.logecho "[11]开始配置全局启用reids..."echo 'export PATH=/data/app/redis/src:$PATH' >>/etc/profilesource /etc/profile &>/dev/nullecho "[12]开始配置system工具管理redis..."cd /lib/systemd/system/cat >redis.service <<EOF
[Unit]
Description=Redis
After=network.target[Service]
ExecStart=/data/app/redis/src/redis-server /data/app/redis/redis.conf --daemonize no
ExecStop=/data/app/redis/src/redis-cli -h 127.0.0.1 -p 6379 shutdown[Install]
WantedBy=multi-user.target
EOFcd - &>/dev/nullsystemctl daemon-reloadsystemctl start redis.servicecd /data/app/redisecho "[13]安装完毕!"sleep 1echo "请使用./data/app/redis/src/redis-cli -h localhost -p 6379 命令登录使用redis!"echo "如果环境变量不生效,请手动执行命令:sourece /etc/profile"echo "----------------------------------------------------------------------------"sleep 2elseecho "[1]安装失败..."sleep 1echo "[2]原因根目录下存在冲突目录..."sleep 1echo "[3]请在删除/data目录或重命名后重新运行本程序...!"echo "----------------------------------------------------------------------------"exit 2fi
}
function make_MGR() {