Shell编程之批量安装服务脚本实例剖析

前端之家收集整理的这篇文章主要介绍了Shell编程之批量安装服务脚本实例剖析前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天分享一下昨天写过的一个小脚本运行的整个过程运行结果如下:




剖析如下:

#!/bin/bash                         
# Date: 4:42 2018-2-10
# Mail: ywyankerp@163.com
# Founder: <YanKai>
# Describe: This is a one - button installation service script
# 提示:使用此脚本时,尽量先选择第一项配置Yum源!
red_col="\e[1;31m" 		#定义红色输出
reset_col="\e[0m"  		#定义红色输出
LOG_DIR=/usr/local/src   #定义下载安装包路径
. /etc/init.d/functions      #加载函数库
MMM=`rpm -qa | grep mariadb`  #在centos7中默认存在mariadb 定义变量卸载!
#node 1.
function caidan(){           #定义菜单函数 主要输出以下信息
cat <<YanKaI
+------------------------------------------------+
|                       1. 配置Yum源             |
|        _o0o_          2. 安装Nginx	         |
|        08880          3. 安装Apache            |
|       88"."88         4. 安装MysqL             |
|       (|-_-|)         5. 安装PHP               |
|        0\=/0          6. 部署LNMP环境          |
|      __/   \__        7. 安装zabbix监控        |
|     ‘\   ///‘         8. 退出此管理程序        |
|    / Linux一键 \      9. 关闭计算机            |
|  ||    Server   ||    ======================   |  
|  \        ////          一键安装服务           |
|   |||  i i i    |||               by YanKaI    |
|   ___        ___      ======================   |
|___‘.  /--.--\ .‘___                            |
+------------------------------------------------+
YanKaI
} 			#结束函数
caidan 		#调用我们的菜单函数,也就是输出以上内容
#node 2.
function panduan (){           #定义判断函数,主要判断用户输入的内容
	read -p "请您输入{1-9}任意选项:" NUM        #等待用户输入,并把输入内容赋值给变量NUM
		expr $NUM + 1 &> /dev/null          #判断用户输入的是否是数字
	if [ "$?" -ne 0 ];then				#如果输入的不是数字
		action "请您输入数值" /bin/false 		#那么 输出一条 请您输入数值 
	elif [[ "$NUM" == 0 ]];then          #如果用户输入的是0
		action "请您输入比0大的数值" /bin/false       #那么就输出请您输入比0大的数值
	fi               #退出if判断
}
#node 3.Yum
function Yum_check(){           #定义Yum源的函数
	echo -en "${red_col}正在配置Yum源,请稍等....\n${reset_col}"	#输入一条正在配置Yum 最后调用了红色变量
	if [ -f /etc/yum.repos.d/CentOS-Base.repo ]          #如果/etc/yum.repo/Centos-Base.repo 是一个普通文件
		then 			#那么
		  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back && \  #备份原先的yum文件
		  wget http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null  && \   #下载阿里yum源,最后拷贝到Yum路径
		  mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo && yum clean all &>/dev/null && yum makecache &>/dev/null
	fi              #结束if语句
		if [ "$?" -eq 0 ];then        #那么如果以上YUM配置成功
	           action "Yum源配置成功!!!" /bin/true #输出一条 成功
		else   #否则
		   action "Yum源配置失败,请您检查网络" /bin/false	#输入一条失败
		   exit 1 			#退出此脚本
		fi	#结束if语句
}
#node 4.Nginx
function Nginx_server(){		#定义Nginx函数
	echo -en "${red_col}开始安装Nginx服务,请稍后.....\n${reset_col}"  #输入一条开始安装Nginx
		yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y &>/dev/null && useradd -M -s /sbin/nologin Nginx && \   #安装gcc pcre等支持包
		cd $LOG_DIR && wget http://Nginx.org/download/Nginx-1.12.2.tar.gz &>/dev/null && tar zxf Nginx-1.12.2.tar.gz && \  下载Nginx源码包 版本为12.2   随后进入/usr/local/src 进行相关的安装操作
		cd $LOG_DIR/Nginx-1.12.2 && ./configure --prefix=/usr/local/Nginx --with-http_dav_module   --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_ssl_module --with-http_gzip_static_module --user=Nginx --group=Nginx &>/dev/null && make &>/dev/null && make install &>/dev/null
if [ -f /usr/local/Nginx/sbin/Nginx ]  #如果/usr/local/Nginx/sbin/Nginx是一个普通文件 说明安装是正常的
   then			#那么
     ln -s /usr/local/Nginx/sbin/Nginx /usr/local/sbin   #做一条软连接方便之后启动Nginx 
fi		#退出if判断
  if [ "$?" -eq 0 ]		#如果以上的操作都是正确的
     then	#那么
	action "Nginx安装成功" /bin/true && /usr/local/Nginx/sbin/Nginx		#输出Nginx安装成功,并启动Nginx
     else 	#否则
	action "Nginx安装失败,请检查" /bin/false		#如果以上操作执行不正确,那么输出Nginx安装失败
	exit 1       #随后退出脚本
  fi  	#结束if语句
}
#node 2. Apache
function Apache_server(){ 		#定义Apache函数
	echo -en "${red_col}开始安装Apache服务,请稍后.....\n${reset_col}"	#老样子 输出开始安装apache
	yum install httpd -y &>/dev/null            #Yum安装apache 
		if [ "$?" -eq 0 ] 		#如果安装成功
		   then  	#那么
	             action "Apache安装成功!" /bin/true	#输出apache安装成功
		   else		#否则
		     action "Apache安装失败,请检查环境" /bin/false		#输出apache安装失败
		     exit 1		#退出脚本
   		fi
}
#node 3. MysqL
function MysqL_server(){  		#定义MysqL函数
	echo -en "${red_col}开始安装MysqL数据库,请稍后.....\n${reset_col}" #输入MysqL正在安装
		if [ -n $MMM ]         #如果MMM这个变量执行结果大于0 
		   then		#那么说明就有mariadb
		     rpm -e mariadb-libs --nodeps 2&>/dev/null   #最后卸载mariadb
		   else		#否则
		     action "mariadb卸载失败,请重试..." /bin/false		#输出mariadb卸载失败
		     exit 1		#退出
		fi   #结束if语句
cd $LOG_DIR && {     #进入/usr/local/src   #接下来定义下载MysqL5.7二进制安装包 进行安装
   wget http://mirrors.sohu.com/MysqL/MysqL-5.7/MysqL-5.7.18-linux-glibc2.5-x86_64.tar.gz &>/dev/null  && tar zxf MysqL-5.7.18-linux-glibc2.5-x86_64.tar.gz && \
 mv MysqL-5.7.18-linux-glibc2.5-x86_64 /usr/local/MysqL	&& \
cd /usr/local/MysqL/ && mkdir data && mkdir log && echo "export PATH=$PATH:/usr/local/MysqL/bin" >> /etc/profile && \
	source /etc/profile && groupadd MysqL && useradd -r -g MysqL -s /bin/false MysqL
}
cat << EOF > /etc/my.cnf        #安装完成后写入MysqL配置文件到/etc/my.cnf
[client]    
socket=/usr/local/MysqL/MysqL.sock    
[MysqLd]    
basedir=/usr/local/MysqL    
datadir=/usr/local/MysqL/data    
pid-file=/usr/local/MysqL/data/MysqLd.pid    
socket=/usr/local/MysqL/MysqL.sock    
log_error=/usr/local/MysqL/log/MysqL.err  
EOF
	if [ -f /etc/my.cnf ]  #/etc/my.cnf是一个普通文件,说明主配置已经导入成功了
	   then			#那么执行一些权限初始化操作
	     chmod 750 data/ && chown -R MysqL . && chgrp -R MysqL . && bin/MysqLd --initialize --user=MysqL && cp /usr/local/MysqL/support-files/MysqL.server /etc/init.d/MysqLd && service MysqLd start &> /dev/null
	   else		#否则
	     echo "MysqL安装失败!!!"	#MysqL安装失败!!!
			exit 1		#退出脚本
	fi		#结束if语句
	ln -s /usr/local/MysqL/bin/MysqL /usr/local/sbin   #创建软连接
	ln -s /usr/local/MysqL/bin/MysqLadmin /usr/local/sbin	#创建软连接
oo=`cat /usr/local/MysqL/log/MysqL.err | grep password | awk '{print $11}'`	   #在这里定义截取MysqL密码
MysqLadmin -uroot -p${oo} password pwd123 &>/dev/null	#修改MysqL密码为:pwd123
	if [ "$?" -eq 0 ]		#如果以上修改成功了
	   then		#那么
		action "MysqL数据库安装成功,密码为:pwd123" /bin/true	#输出MysqL安装成功。密码为:pwd123
	   else		#否则
		action "MysqL数据库安装失败密码初始化失败!" /bin/false	#输出MysqL初始化失败.
	fi	#结束if语句
} 
#node 4. PHP	
function PHP_server(){		#定义PHP函数
	echo -en "${red_col}开始安装依赖包,请稍后....\n${reset_col}"	#输出开始安装依赖包
	yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel &> /dev/null  #安装依赖包并不输出
if [ "$?" -eq 0 ];then	#如果以上命令执行成功了!!
   action "依赖包安装完成" /bin/true	#输出依赖包安装完成
   else		#否则
   action "依赖包安装失败请检查环境!!!" /bin/false	#输出依赖包安装失败
   exit 1	#随后退出此脚本
fi	#退出脚本

yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel libjpeg-devel libpng libpng-devel freetype-devel libmcrypt libmcrypt-devel &>/dev/null  #安装PHP依赖包

cd $LOG_DIR && {	#如果成功进入/usr/local/src目录 那么执行以下命令
	echo -en "${red_col}开始安装PHP请稍后,过程稍微有点长...\n${reset_col}"
	    wget http://cn2.PHP.net/distributions/PHP-5.6.27.tar.gz &> /dev/null && \
   	    tar zxf PHP-5.6.27.tar.gz && cd PHP-5.6.27/ && \
	./configure --prefix=/usr/local/PHP5.6 --with-config-file-path=/etc  --with-MysqL=/usr/local/MysqL --with-MysqLi=/usr/local/MysqL/bin/MysqL_config --with-MysqL-sock=/usr/local/MysqL/MysqL.sock --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt-dir  --with-config-file-scan-dir=/etc/PHP.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl &>/dev/null
}
if [ "$?" -eq 0 ]	#那么如果以上命令执行成功了
   then		#那么
     make &>/dev/null && make install &>/dev/null	#执行make && make install 不输出内容
   else		#否则
     action "PHP安装失败,请检查环境..." /bin/false	#输出PHP安装失败	
     exit 1		#退出脚本
fi		#结束if语句
echo -en "${red_col}正在配置PHP,请稍等....\n${reset_col}"  #输出正在配置PHP说明以上命令执行成功
cd /usr/local/src/PHP-5.6.27/ && {		#cd进入PHP解压目录 如果进入成功,那么执行以下命令
   cp PHP.ini-production /etc/PHP.ini && cp sapi/fpm/init.d.PHP-fpm /etc/init.d/PHP-fpm && chmod +x /etc/init.d/PHP-fpm && chkconfig --add PHP-fpm && chkconfig PHP-fpm on
}
	if [ "$?" -eq 0 ];then   #如果配置PHP成功,那么就执行下面命令
	   cp /usr/local/PHP5.6/etc/PHP-fpm.conf.default /usr/local/PHP5.6/etc/PHP-fpm.conf && echo -en "${red_col}复制主配置成功${reset_col}"
	   else		#否则
	     action "配置PHP环境出错,请检查..."  /bin/false	#给出提示
	     exit 1		#退出脚本
	fi		#结束if语句
if [ ! -d /usr/local/PHP5.6/etc/PHP-fpm.conf ] #安装完上面的操作,如果此文件是目录文件,那么运行以下指令  
  then  
   sed -i 's#;pid = run/PHP-fpm.pid#pid = run/PHP-fpm.pid#g' /usr/local/PHP5.6/etc/PHP-fpm.conf  
   sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/g' /usr/local/PHP5.6/etc/PHP-fpm.conf  
   sed -i 's/pm.max_children = 5/pm.max_children = 300/g' /usr/local/PHP5.6/etc/PHP-fpm.conf  
   sed -i 's/pm.start_servers = 2/pm.start_servers = 20/g' /usr/local/PHP5.6/etc/PHP-fpm.conf  
   sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' /usr/local/PHP5.6/etc/PHP-fpm.conf  
   sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' /usr/local/PHP5.6/etc/PHP-fpm.conf  
   sed -i 's/user = nobody/user = Nginx/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
   sed -i 's/group = nobody/group = Nginx/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
   else  #否则
   action "配置PHP环境出错,请检查..."  /bin/false  #给出相应的提示
   exit 1		#退出此脚本
fi  	#结束if语句
if [ $? -eq 0 ]  	#如果以上命令都执行成功了! 
   then  	#那么
     systemctl start PHP-fpm && action "PHP启动成功" /bin/true	#启动PHP输出成功
   else  	#否则
     echo "启动PHP失败"		#输出启动PHP失败  
     exit 1		#退出此脚本
fi   	#结束if语句
}

#node 5. LNMP_server
function LNMP(){	#定义lnmp函数
	Nginx_server	#调用Nginx函数
        MysqL_server	#调用MysqL函数
	PHP_server		#调用PHP函数
	echo -en "${red_col}开始安装LNMP环境,请稍后..可以喝杯茶~\n${reset_col}"	#三个函数执行完成后。输出此信息
if [ "$?" -eq 0 ];then	#如果以上命令执行正确
   echo -en "${red_col}LNMP安装完成,正在配置Nginx解析PHP请稍后....\n${reset_col}"	#那么输出内容
   else		#否则
     action "LNMP安装失败,请您检查环境..." /bin/false	#输出失败的提示
     exit 1		#退出此脚本
fi	#结束if语句
  if [ -f /usr/local/Nginx/conf/Nginx.conf ]  #如果Nginx.conf是普通文件
     then		#那么执行以下操作
       sed -i 's/index  index.html index.htm;/index  index.PHP index.html index.htm;/g' /usr/local/Nginx/conf/Nginx.conf  
       sed -i 's/#    root           html;/    root           html;/g' /usr/local/Nginx/conf/Nginx.conf  
       sed -i 's/#    fastcgi_pass   127.0.0.1:9000;/    fastcgi_pass   127.0.0.1:9000;/g' /usr/local/Nginx/conf/Nginx.conf  
       sed -i 's/#    fastcgi_index  index.PHP;/    fastcgi_index  index.PHP;/g' /usr/local/Nginx/conf/Nginx.conf  
       sed -i 's*#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;*g' /usr/local/Nginx/conf/Nginx.conf  
       sed -i 's/#    include        fastcgi_params;/    include        fastcgi.conf;/g' /usr/local/Nginx/conf/Nginx.conf  
       sed -i '71d' /usr/local/Nginx/conf/Nginx.conf && sed -i 'N;70a}' /usr/local/Nginx/conf/Nginx.conf  
       sed -i '65d' /usr/local/Nginx/conf/Nginx.conf && sed -i 'N;64alocation ~ \\.PHP$ {' /usr/local/Nginx/conf/Nginx.conf  	
	else		#否则执行如下:
	   action "Nginx解析PHP失败,请您检查环境..." /bin/false
	   exit 1
fi		#结束if语句
	touch /usr/local/Nginx/html/2018.PHP	#创建PHP测试页2018.祝大家新年快乐~~~
cat << EOF >/usr/local/Nginx/html/2018.PHP	#内容如下
<?PHP
PHPinfo();
?>
EOF
/usr/local/Nginx/sbin/Nginx -s reload		#最后我们加载Nginx服务
	if [ "$?" -eq 0 ]		#如果加载成功
	   then		#那么
	     action "LNMP环境正式搭建成功,请您访问http://IP/2018.PHP" /bin/true #输出请您访问测试页
	   else			#否则
	     action "LNMP搭建失败啦,哈哈哈请您检查一下环境吧..."		#输出lnmp安装失败
	     exit 1		#退出脚本
	fi	#结束if语句
}

function zabbix_server(){	#定义zabbix函数
	if [ -f /usr/local/Nginx/sbin/Nginx -a -f /etc/my.cnf -a -f /etc/PHP.ini ];then #如果Nginx my.cnf 等是普通文件
	   echo -en "${red_col}开始安装zabbix请稍后!!!\n${reset_col}"	#那么输出内容
	else		#否则
	   action "提示:在安装zabbix之前请先安装LNMP环境!" /bin/false	#提示一条请先安装lnmp环境
	   exit 1	#退出此脚本
	fi	#结束if语句
	groupadd zabbix  && useradd -g zabbix zabbix	#创建zabbix用户 组 随后执行以下操作 
	sed -i 's/;date.timezone =/date.timezone = PRC/g' /etc/PHP.ini
	sed -i 's/expose_PHP = On/expose_PHP = Off/g' /etc/PHP.ini
	sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/PHP.ini
	sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/PHP.ini
	sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/PHP.ini
	sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/PHP.ini
	sed -i 's/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/g' /etc/PHP.ini
	sed -i 's/;mbstring.func_overload = 0/mbstring.func_overload = 0/g' /etc/PHP.ini
if [ "$?" -eq 0 ];then	#如果配置修改成功
   echo -en "${red_col}编辑/etc/PHP.ini文件成功!\n${reset_col}"	#那么输出内容
   else		#否则
	action "编辑/etc/PHP.ini文件失败!" /bin/false	#输出内容
	exit 1	#退出脚本
fi

yum install -y net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel  OpenIPMI-devel  libssh2-devel &>/dev/null	#安装zabbix依赖包
if [ "$?" -eq 0 ]	#如果依赖包安装成功
  then	#那么
    action "zabbix依赖包安装成功!!!"  /bin/true		#输出成功
  else	#否则
    action "zabbix依赖包安装失败" /bin/false		#输出失败
    exit 1	#退出此脚本
fi	#结束if语句
cd $LOG_DIR && {		#进入/usr/local/src成功 那么执行以下指令
	wget http://www.fping.org/dist/fping-3.10.tar.gz &>/dev/null && tar zxf fping-3.10.tar.gz &>/dev/null && \
cd fping-3.10/ && ./configure &>/dev/null && make &>/dev/null && make install &>/dev/null
}
if [ "$?" -eq 0 ]	#如果以上操作成功
   then		#那么
     chown root:zabbix /usr/local/sbin/fping  && chmod 4710 /usr/local/sbin/fping	#给予权限
   else 	#否则
     action "fping安装失败" /bin/false0		#输出失败的信息
   exit 1	#退出脚本
fi	#结束if语句
cd $LOG_DIR && {		#如果进入/usr/local/src成功
wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.1/zabbix-3.2.1.tar.gz  &>/dev/null && \	#那么下载zabbix源码包
tar zxf zabbix-3.2.1.tar.gz && cd  zabbix-3.2.1/ && \	#执行解压安装等操作
./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-MysqL=/usr/local/MysqL/bin/MysqL_config --with-net-snmp --with-libcurl --with-openipmi &>/dev/null && make &>/dev/null && make install &>/dev/null
}
if [ "$?" -eq 0 ]	#如果安装成功
   then	#那么
     action "zabbix安装成功,正在配置请稍后...." /bin/true	#输出内容
   else		#否则
     action "zabbix安装失败,请您检查环境...."  /bin/false	#输出内容
   exit 1	#退出脚本
fi	#结束if语句
ln -s /usr/local/zabbix/bin/* /usr/local/bin/  #创建软连接
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/	#创建软连接
if [ "$?" -eq 0 ];		#如果以上命令执行成功
   then		#那么执行以下操作。创建zabbix数据库
     /usr/local/sbin/MysqL -uroot -ppwd123 -e 'create database zabbix character set utf8;'  &>/dev/null
     /usr/local/sbin/MysqL -uroot -ppwd123 -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'" &>/dev/null
   else	#否则输入以下信息
     action "zabbix创建软连接失败!" /bin/false
     exit 1
fi
	if [ "$?" -eq 0 ]	#如果以上命令执行成功					
		then	#那么
	     action "zabbix数据库创建成功!" /bin/true	#输出此信息
	   else	#否则
             action "zabbix数据库创建失败!" /bin/false	#输出失败
	   exit 1	#退出脚本
	fi	#结束if语句
cd /usr/local/src/zabbix-3.2.1/database/MysqL  && {		#如果进入目录成功,那么导入数据库
/usr/local/sbin/MysqL -uzabbix -pzabbix -hlocalhost zabbix < schema.sql  &>/dev/null
/usr/local/sbin/MysqL -uzabbix -pzabbix -hlocalhost zabbix < images.sql  &>/dev/null
/usr/local/sbin/MysqL -uzabbix -pzabbix -hlocalhost zabbix < data.sql   &>/dev/null
}
if [ "$?" -ne 0 ]	#如果导入失败了
   then		#那么
     action "zabbix数据库导入失败!" /bin/false	#输出此信息
    exit 1	#退出脚本	
   else	#否则
     action "zabbix数据库导入成功!" /bin/true		#输出成功
fi	#结束if语句		
#执行以下的操作
sed -i 's$LogFile=/tmp/zabbix_server.log$LogFile=/usr/local/zabbix/logs/zabbix_server.log$g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's$# PidFile=/tmp/zabbix_server.pid$PidFile=/usr/local/zabbix/logs/zabbix_server.pid$g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/# DBHost=localhost/DBHost=localhost/g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/# DBPassword=/DBPassword=zabbix/g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's/# DBPort=3306/DBPort=3306/g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's$# FpingLocation=/usr/sbin/fping$FpingLocation=/usr/sbin/fping$g' /usr/local/zabbix/etc/zabbix_server.conf
sed -i 's$# DBSocket=/tmp/MysqL.sock$DBSocket=/usr/local/MysqL/MysqL.sock$g' /usr/local/zabbix/etc/zabbix_server.conf
mkdir -p /usr/local/zabbix/logs  &&  chown -R zabbix:zabbix /usr/local/zabbix/  

cat <<EOF >/etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/MysqL/lib
/usr/local/lib
EOF
/usr/local/Nginx/sbin/Nginx -s reload && /etc/init.d/PHP-fpm restart  &>/dev/null  #重新加载Nginx PHP 
if [ "$?" -eq 0  ];then		#如果加载成功
   action "zabbix主配修改成功,正在进行相关的配置~" /bin/true	#那么输出此信息
   else			#否则
	action "zabbix发生了严重的错误!!!" /bin/false		#否则输出失败
	exit 1		#退出此脚本
fi	#结束if语句
cd /usr/local/src/zabbix-3.2.1/ && {   #如果进入zabbix解压目录成功 ,那么执行以下操作
 	cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
	cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
	chmod +x /etc/rc.d/init.d/zabbix_server
	chmod +x /etc/rc.d/init.d/zabbix_agentd
	chkconfig --add zabbix_server 
	chkconfig --add zabbix_agentd
	chkconfig zabbix_server on
	chkconfig zabbix_agentd on
}

	if [ "$?" -eq 0 ];then		#以此类推这里不在解释,写的手累,谅解
	   action "复制zabbix启动项成功" /bin/true
	else
	   action "复制zabbix启动项失败!!" /bin/false
	   exit 1
	fi
sed -i 's$BASEDIR=/usr/local$BASEDIR=/usr/local/zabbix/$g' /etc/rc.d/init.d/zabbix_server
sed -i 's*PIDFILE=/tmp/$BINARY_NAME.pid*PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid*g'  /etc/rc.d/init.d/zabbix_server
sed -i 's$BASEDIR=/usr/local$BASEDIR=/usr/local/zabbix/$g' /etc/rc.d/init.d/zabbix_agentd
sed -i 's*PIDFILE=/tmp/$BINARY_NAME.pid*PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid*g' /etc/rc.d/init.d/zabbix_agentd

ldconfig && systemctl daemon-reload 
/etc/init.d/zabbix_agentd start  &>/dev/null
/etc/init.d/zabbix_server start  &>/dev/null
	if [ "$?" -eq 0 ];then
	   action "zabbix监控启动成功,正在进行配置页面,请稍后!!!" /bin/true
	else
	   action "zabbix监控启动失败,请检查环境!!!" /bin/false
	   exit 1
	fi
mkdir /usr/local/Nginx/html/zabbix/ 
	if [ -d /usr/local/Nginx/html/zabbix/ ];then
           cp -r /usr/local/src/zabbix-3.2.1/frontends/PHP/* /usr/local/Nginx/html/zabbix/
	else
	   action "zabbix目录创建失败" /bin/false
	   exit 1
	fi
chown -R Nginx:Nginx /usr/local/Nginx/html/zabbix

if [ $? -eq 0  ];then		#最后输出以下信息,对以上的命令执行进行判断
   echo "zabbix部署成功,请您访问http://IP/zabbix"
   else
     echo "zabbix部署失败,请检查环境!!!"
	exit 1
fi
}

function TC (){		#定义退出脚本
        echo -e "${red_col}此管理程序已经成功退出!\n${reset_col}"
	exit 0		#退出
}

function GJ(){		#编写关机脚本
	echo -e "${red_col}即将关机,请稍后....\n${reset_col}"
	shutdown -h now		#关机
}

function zong(){	#定义总的函数 也就是结局
while :		#while :循环条件为真
do		#do
 panduan	#一直循环判断,实现了一直等待让用户输入
	case $NUM in	#case 如果$NUM变量中
		1)		#输入的是1
		Yum_check	#那么调用YUM函数
		;;	
		2)				.......等等 以此类推这里不在解释,写的手累,谅解
		Nginx_server
		;;
		3)
		Apache_server
		;;
		4)
		MysqL_server
		;;
		5)
		PHP_server
		;;
		6)
		LNMP
		;;
		7)
		zabbix_server
		;;
		8)
		TC
		;;
		9)
		GJ
		;;
	esac		#最后使用esac结束case语句
done		#done结束while循环
}	
zong		#最后调用总的函数

写的手有点累,可能有些错别字,请谅解,希望对您能够有所帮助,祝大家2018新年快乐,再见~

猜你在找的Bash相关文章