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

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

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




剖析如下:

  1. #!/bin/bash
  2. # Date: 4:42 2018-2-10
  3. # Mail: ywyankerp@163.com
  4. # Founder: <YanKai>
  5. # Describe: This is a one - button installation service script
  6. # 提示:使用此脚本时,尽量先选择第一项配置Yum源!
  7. red_col="\e[1;31m" #定义红色输出
  8. reset_col="\e[0m" #定义红色输出
  9. LOG_DIR=/usr/local/src #定义下载安装包路径
  10. . /etc/init.d/functions #加载函数
  11. MMM=`rpm -qa | grep mariadb` #在centos7中默认存在mariadb 定义变量卸载!
  12. #node 1.
  13. function caidan(){ #定义菜单函数 主要输出以下信息
  14. cat <<YanKaI
  15. +------------------------------------------------+
  16. | 1. 配置Yum |
  17. | _o0o_ 2. 安装Nginx |
  18. | 08880 3. 安装Apache |
  19. | 88"."88 4. 安装MysqL |
  20. | (|-_-|) 5. 安装PHP |
  21. | 0\=/0 6. 部署LNMP环境 |
  22. | __/ \__ 7. 安装zabbix监控 |
  23. | \ ///‘ 8. 退出此管理程序 |
  24. | / Linux一键 \ 9. 关闭计算机 |
  25. | || Server || ====================== |
  26. | \ //// 一键安装服务 |
  27. | ||| i i i ||| by YanKaI |
  28. | ___ ___ ====================== |
  29. |___‘. /--.--\ .‘___ |
  30. +------------------------------------------------+
  31. YanKaI
  32. } #结束函数
  33. caidan #调用我们的菜单函数,也就是输出以上内容
  34. #node 2.
  35. function panduan (){ #定义判断函数,主要判断用户输入的内容
  36. read -p "请您输入{1-9}任意选项:" NUM #等待用户输入,并把输入内容赋值给变量NUM
  37. expr $NUM + 1 &> /dev/null #判断用户输入的是否是数字
  38. if [ "$?" -ne 0 ];then #如果输入的不是数字
  39. action "请您输入数值" /bin/false #那么 输出一条 请您输入数值
  40. elif [[ "$NUM" == 0 ]];then #如果用户输入的是0
  41. action "请您输入比0大的数值" /bin/false #那么就输出请您输入比0大的数值
  42. fi #退出if判断
  43. }
  44. #node 3.Yum
  45. function Yum_check(){ #定义Yum源的函数
  46. echo -en "${red_col}正在配置Yum源,请稍等....\n${reset_col}" #输入一条正在配置Yum 最后调用了红色变量
  47. if [ -f /etc/yum.repos.d/CentOS-Base.repo ] #如果/etc/yum.repo/Centos-Base.repo 是一个普通文件
  48. then #那么
  49. mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.back && \ #备份原先的yum文件
  50. wget http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null && \ #下载阿里yum源,最后拷贝到Yum路径
  51. mv Centos-7.repo /etc/yum.repos.d/CentOS-Base.repo && yum clean all &>/dev/null && yum makecache &>/dev/null
  52. fi #结束if语句
  53. if [ "$?" -eq 0 ];then #那么如果以上YUM配置成功
  54. action "Yum源配置成功!!!" /bin/true #输出一条 成功
  55. else #否则
  56. action "Yum源配置失败,请您检查网络" /bin/false #输入一条失败
  57. exit 1 #退出此脚本
  58. fi #结束if语句
  59. }
  60. #node 4.Nginx
  61. function Nginx_server(){ #定义Nginx函数
  62. echo -en "${red_col}开始安装Nginx服务,请稍后.....\n${reset_col}" #输入一条开始安装Nginx
  63. yum install gcc gcc-c++ pcre-devel zlib-devel openssl-devel -y &>/dev/null && useradd -M -s /sbin/nologin Nginx && \ #安装gcc pcre等支持
  64. 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 进行相关的安装操作
  65. 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
  66. if [ -f /usr/local/Nginx/sbin/Nginx ] #如果/usr/local/Nginx/sbin/Nginx是一个普通文件 说明安装是正常的
  67. then #那么
  68. ln -s /usr/local/Nginx/sbin/Nginx /usr/local/sbin #做一条软连接方便之后启动Nginx
  69. fi #退出if判断
  70. if [ "$?" -eq 0 ] #如果以上的操作都是正确的
  71. then #那么
  72. action "Nginx安装成功" /bin/true && /usr/local/Nginx/sbin/Nginx #输出Nginx安装成功,并启动Nginx
  73. else #否则
  74. action "Nginx安装失败,请检查" /bin/false #如果以上操作执行不正确,那么输出Nginx安装失败
  75. exit 1 #随后退出脚本
  76. fi #结束if语句
  77. }
  78. #node 2. Apache
  79. function Apache_server(){ #定义Apache函数
  80. echo -en "${red_col}开始安装Apache服务,请稍后.....\n${reset_col}" #老样子 输出开始安装apache
  81. yum install httpd -y &>/dev/null #Yum安装apache
  82. if [ "$?" -eq 0 ] #如果安装成功
  83. then #那么
  84. action "Apache安装成功!" /bin/true #输出apache安装成功
  85. else #否则
  86. action "Apache安装失败,请检查环境" /bin/false #输出apache安装失败
  87. exit 1 #退出脚本
  88. fi
  89. }
  90. #node 3. MysqL
  91. function MysqL_server(){ #定义MysqL函数
  92. echo -en "${red_col}开始安装MysqL数据库,请稍后.....\n${reset_col}" #输入MysqL正在安装
  93. if [ -n $MMM ] #如果MMM这个变量执行结果大于0
  94. then #那么说明就有mariadb
  95. rpm -e mariadb-libs --nodeps 2&>/dev/null #最后卸载mariadb
  96. else #否则
  97. action "mariadb卸载失败,请重试..." /bin/false #输出mariadb卸载失败
  98. exit 1 #退出
  99. fi #结束if语句
  100. cd $LOG_DIR && { #进入/usr/local/src #接下来定义下载MysqL5.7二进制安装包 进行安装
  101. 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 && \
  102. mv MysqL-5.7.18-linux-glibc2.5-x86_64 /usr/local/MysqL && \
  103. cd /usr/local/MysqL/ && mkdir data && mkdir log && echo "export PATH=$PATH:/usr/local/MysqL/bin" >> /etc/profile && \
  104. source /etc/profile && groupadd MysqL && useradd -r -g MysqL -s /bin/false MysqL
  105. }
  106. cat << EOF > /etc/my.cnf #安装完成后写入MysqL配置文件到/etc/my.cnf
  107. [client]
  108. socket=/usr/local/MysqL/MysqL.sock
  109. [MysqLd]
  110. basedir=/usr/local/MysqL
  111. datadir=/usr/local/MysqL/data
  112. pid-file=/usr/local/MysqL/data/MysqLd.pid
  113. socket=/usr/local/MysqL/MysqL.sock
  114. log_error=/usr/local/MysqL/log/MysqL.err
  115. EOF
  116. if [ -f /etc/my.cnf ] #/etc/my.cnf是一个普通文件,说明主配置已经导入成功了
  117. then #那么执行一些权限初始化操作
  118. 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
  119. else #否则
  120. echo "MysqL安装失败!!!" #MysqL安装失败!!!
  121. exit 1 #退出脚本
  122. fi #结束if语句
  123. ln -s /usr/local/MysqL/bin/MysqL /usr/local/sbin #创建软连接
  124. ln -s /usr/local/MysqL/bin/MysqLadmin /usr/local/sbin #创建软连接
  125. oo=`cat /usr/local/MysqL/log/MysqL.err | grep password | awk '{print $11}'` #在这里定义截取MysqL密码
  126. MysqLadmin -uroot -p${oo} password pwd123 &>/dev/null #修改MysqL密码为:pwd123
  127. if [ "$?" -eq 0 ] #如果以上修改成功了
  128. then #那么
  129. action "MysqL数据库安装成功,密码为:pwd123" /bin/true #输出MysqL安装成功。密码为:pwd123
  130. else #否则
  131. action "MysqL数据库安装失败密码初始化失败!" /bin/false #输出MysqL初始化失败.
  132. fi #结束if语句
  133. }
  134. #node 4. PHP
  135. function PHP_server(){ #定义PHP函数
  136. echo -en "${red_col}开始安装依赖包,请稍后....\n${reset_col}" #输出开始安装依赖包
  137. yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel &> /dev/null #安装依赖包并不输出
  138. if [ "$?" -eq 0 ];then #如果以上命令执行成功了!!
  139. action "依赖包安装完成" /bin/true #输出依赖包安装完成
  140. else #否则
  141. action "依赖包安装失败请检查环境!!!" /bin/false #输出依赖包安装失败
  142. exit 1 #随后退出此脚本
  143. fi #退出脚本
  144.  
  145. yum -y install libxml2-devel libcurl-devel openssl-devel bzip2-devel libjpeg-devel libpng libpng-devel freetype-devel libmcrypt libmcrypt-devel &>/dev/null #安装PHP依赖包
  146.  
  147. cd $LOG_DIR && { #如果成功进入/usr/local/src目录 那么执行以下命令
  148. echo -en "${red_col}开始安装PHP请稍后,过程稍微有点长...\n${reset_col}"
  149. wget http://cn2.PHP.net/distributions/PHP-5.6.27.tar.gz &> /dev/null && \
  150. tar zxf PHP-5.6.27.tar.gz && cd PHP-5.6.27/ && \
  151. ./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
  152. }
  153. if [ "$?" -eq 0 ] #那么如果以上命令执行成功了
  154. then #那么
  155. make &>/dev/null && make install &>/dev/null #执行make && make install 不输出内容
  156. else #否则
  157. action "PHP安装失败,请检查环境..." /bin/false #输出PHP安装失败
  158. exit 1 #退出脚本
  159. fi #结束if语句
  160. echo -en "${red_col}正在配置PHP,请稍等....\n${reset_col}" #输出正在配置PHP说明以上命令执行成功
  161. cd /usr/local/src/PHP-5.6.27/ && { #cd进入PHP解压目录 如果进入成功,那么执行以下命令
  162. 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
  163. }
  164. if [ "$?" -eq 0 ];then #如果配置PHP成功,那么就执行下面命令
  165. cp /usr/local/PHP5.6/etc/PHP-fpm.conf.default /usr/local/PHP5.6/etc/PHP-fpm.conf && echo -en "${red_col}复制主配置成功${reset_col}"
  166. else #否则
  167. action "配置PHP环境出错,请检查..." /bin/false #给出提示
  168. exit 1 #退出脚本
  169. fi #结束if语句
  170. if [ ! -d /usr/local/PHP5.6/etc/PHP-fpm.conf ] #安装完上面的操作,如果此文件是目录文件,那么运行以下指令
  171. then
  172. sed -i 's#;pid = run/PHP-fpm.pid#pid = run/PHP-fpm.pid#g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  173. sed -i 's/listen = 127.0.0.1:9000/listen = 127.0.0.1:9000/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  174. sed -i 's/pm.max_children = 5/pm.max_children = 300/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  175. sed -i 's/pm.start_servers = 2/pm.start_servers = 20/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  176. sed -i 's/pm.min_spare_servers = 1/pm.min_spare_servers = 20/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  177. sed -i 's/pm.max_spare_servers = 3/pm.max_spare_servers = 100/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  178. sed -i 's/user = nobody/user = Nginx/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  179. sed -i 's/group = nobody/group = Nginx/g' /usr/local/PHP5.6/etc/PHP-fpm.conf
  180. else #否则
  181. action "配置PHP环境出错,请检查..." /bin/false #给出相应的提示
  182. exit 1 #退出此脚本
  183. fi #结束if语句
  184. if [ $? -eq 0 ] #如果以上命令都执行成功了!
  185. then #那么
  186. systemctl start PHP-fpm && action "PHP启动成功" /bin/true #启动PHP输出成功
  187. else #否则
  188. echo "启动PHP失败" #输出启动PHP失败
  189. exit 1 #退出此脚本
  190. fi #结束if语句
  191. }
  192.  
  193. #node 5. LNMP_server
  194. function LNMP(){ #定义lnmp函数
  195. Nginx_server #调用Nginx函数
  196. MysqL_server #调用MysqL函数
  197. PHP_server #调用PHP函数
  198. echo -en "${red_col}开始安装LNMP环境,请稍后..可以喝杯茶~\n${reset_col}" #三个函数执行完成后。输出此信息
  199. if [ "$?" -eq 0 ];then #如果以上命令执行正确
  200. echo -en "${red_col}LNMP安装完成,正在配置Nginx解析PHP请稍后....\n${reset_col}" #那么输出内容
  201. else #否则
  202. action "LNMP安装失败,请您检查环境..." /bin/false #输出失败的提示
  203. exit 1 #退出此脚本
  204. fi #结束if语句
  205. if [ -f /usr/local/Nginx/conf/Nginx.conf ] #如果Nginx.conf是普通文件
  206. then #那么执行以下操作
  207. sed -i 's/index index.html index.htm;/index index.PHP index.html index.htm;/g' /usr/local/Nginx/conf/Nginx.conf
  208. sed -i 's/# root html;/ root html;/g' /usr/local/Nginx/conf/Nginx.conf
  209. sed -i 's/# fastcgi_pass 127.0.0.1:9000;/ fastcgi_pass 127.0.0.1:9000;/g' /usr/local/Nginx/conf/Nginx.conf
  210. sed -i 's/# fastcgi_index index.PHP;/ fastcgi_index index.PHP;/g' /usr/local/Nginx/conf/Nginx.conf
  211. 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
  212. sed -i 's/# include fastcgi_params;/ include fastcgi.conf;/g' /usr/local/Nginx/conf/Nginx.conf
  213. sed -i '71d' /usr/local/Nginx/conf/Nginx.conf && sed -i 'N;70a}' /usr/local/Nginx/conf/Nginx.conf
  214. sed -i '65d' /usr/local/Nginx/conf/Nginx.conf && sed -i 'N;64alocation ~ \\.PHP$ {' /usr/local/Nginx/conf/Nginx.conf
  215. else #否则执行如下:
  216. action "Nginx解析PHP失败,请您检查环境..." /bin/false
  217. exit 1
  218. fi #结束if语句
  219. touch /usr/local/Nginx/html/2018.PHP #创建PHP测试页2018.祝大家新年快乐~~~
  220. cat << EOF >/usr/local/Nginx/html/2018.PHP #内容如下
  221. <?PHP
  222. PHPinfo();
  223. ?>
  224. EOF
  225. /usr/local/Nginx/sbin/Nginx -s reload #最后我们加载Nginx服务
  226. if [ "$?" -eq 0 ] #如果加载成功
  227. then #那么
  228. action "LNMP环境正式搭建成功,请您访问http://IP/2018.PHP" /bin/true #输出请您访问测试页
  229. else #否则
  230. action "LNMP搭建失败啦,哈哈哈请您检查一下环境吧..." #输出lnmp安装失败
  231. exit 1 #退出脚本
  232. fi #结束if语句
  233. }
  234.  
  235. function zabbix_server(){ #定义zabbix函数
  236. if [ -f /usr/local/Nginx/sbin/Nginx -a -f /etc/my.cnf -a -f /etc/PHP.ini ];then #如果Nginx my.cnf 等是普通文件
  237. echo -en "${red_col}开始安装zabbix请稍后!!!\n${reset_col}" #那么输出内容
  238. else #否则
  239. action "提示:在安装zabbix之前请先安装LNMP环境!" /bin/false #提示一条请先安装lnmp环境
  240. exit 1 #退出此脚本
  241. fi #结束if语句
  242. groupadd zabbix && useradd -g zabbix zabbix #创建zabbix用户 组 随后执行以下操作
  243. sed -i 's/;date.timezone =/date.timezone = PRC/g' /etc/PHP.ini
  244. sed -i 's/expose_PHP = On/expose_PHP = Off/g' /etc/PHP.ini
  245. sed -i 's/short_open_tag = Off/short_open_tag = On/g' /etc/PHP.ini
  246. sed -i 's/post_max_size = 8M/post_max_size = 16M/g' /etc/PHP.ini
  247. sed -i 's/max_execution_time = 30/max_execution_time = 300/g' /etc/PHP.ini
  248. sed -i 's/max_input_time = 60/max_input_time = 300/g' /etc/PHP.ini
  249. sed -i 's/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/g' /etc/PHP.ini
  250. sed -i 's/;mbstring.func_overload = 0/mbstring.func_overload = 0/g' /etc/PHP.ini
  251. if [ "$?" -eq 0 ];then #如果配置修改成功
  252. echo -en "${red_col}编辑/etc/PHP.ini文件成功!\n${reset_col}" #那么输出内容
  253. else #否则
  254. action "编辑/etc/PHP.ini文件失败!" /bin/false #输出内容
  255. exit 1 #退出脚本
  256. fi
  257.  
  258. 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依赖包
  259. if [ "$?" -eq 0 ] #如果依赖包安装成功
  260. then #那么
  261. action "zabbix依赖包安装成功!!!" /bin/true #输出成功
  262. else #否则
  263. action "zabbix依赖包安装失败" /bin/false #输出失败
  264. exit 1 #退出此脚本
  265. fi #结束if语句
  266. cd $LOG_DIR && { #进入/usr/local/src成功 那么执行以下指令
  267. wget http://www.fping.org/dist/fping-3.10.tar.gz &>/dev/null && tar zxf fping-3.10.tar.gz &>/dev/null && \
  268. cd fping-3.10/ && ./configure &>/dev/null && make &>/dev/null && make install &>/dev/null
  269. }
  270. if [ "$?" -eq 0 ] #如果以上操作成功
  271. then #那么
  272. chown root:zabbix /usr/local/sbin/fping && chmod 4710 /usr/local/sbin/fping #给予权限
  273. else #否则
  274. action "fping安装失败" /bin/false0 #输出失败的信息
  275. exit 1 #退出脚本
  276. fi #结束if语句
  277. cd $LOG_DIR && { #如果进入/usr/local/src成功
  278. wget https://nchc.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.2.1/zabbix-3.2.1.tar.gz &>/dev/null && \ #那么下载zabbix源码包
  279. tar zxf zabbix-3.2.1.tar.gz && cd zabbix-3.2.1/ && \ #执行解压安装等操作
  280. ./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
  281. }
  282. if [ "$?" -eq 0 ] #如果安装成功
  283. then #那么
  284. action "zabbix安装成功,正在配置请稍后...." /bin/true #输出内容
  285. else #否则
  286. action "zabbix安装失败,请您检查环境...." /bin/false #输出内容
  287. exit 1 #退出脚本
  288. fi #结束if语句
  289. ln -s /usr/local/zabbix/bin/* /usr/local/bin/ #创建软连接
  290. ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ #创建软连接
  291. if [ "$?" -eq 0 ]; #如果以上命令执行成功
  292. then #那么执行以下操作。创建zabbix数据库
  293. /usr/local/sbin/MysqL -uroot -ppwd123 -e 'create database zabbix character set utf8;' &>/dev/null
  294. /usr/local/sbin/MysqL -uroot -ppwd123 -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'" &>/dev/null
  295. else #否则输入以下信息
  296. action "zabbix创建软连接失败!" /bin/false
  297. exit 1
  298. fi
  299. if [ "$?" -eq 0 ] #如果以上命令执行成功
  300. then #那么
  301. action "zabbix数据库创建成功!" /bin/true #输出此信息
  302. else #否则
  303. action "zabbix数据库创建失败!" /bin/false #输出失败
  304. exit 1 #退出脚本
  305. fi #结束if语句
  306. cd /usr/local/src/zabbix-3.2.1/database/MysqL && { #如果进入目录成功,那么导入数据库
  307. /usr/local/sbin/MysqL -uzabbix -pzabbix -hlocalhost zabbix < schema.sql &>/dev/null
  308. /usr/local/sbin/MysqL -uzabbix -pzabbix -hlocalhost zabbix < images.sql &>/dev/null
  309. /usr/local/sbin/MysqL -uzabbix -pzabbix -hlocalhost zabbix < data.sql &>/dev/null
  310. }
  311. if [ "$?" -ne 0 ] #如果导入失败了
  312. then #那么
  313. action "zabbix数据库导入失败!" /bin/false #输出此信息
  314. exit 1 #退出脚本
  315. else #否则
  316. action "zabbix数据库导入成功!" /bin/true #输出成功
  317. fi #结束if语句
  318. #执行以下的操作
  319. sed -i 's$LogFile=/tmp/zabbix_server.log$LogFile=/usr/local/zabbix/logs/zabbix_server.log$g' /usr/local/zabbix/etc/zabbix_server.conf
  320. sed -i 's$# PidFile=/tmp/zabbix_server.pid$PidFile=/usr/local/zabbix/logs/zabbix_server.pid$g' /usr/local/zabbix/etc/zabbix_server.conf
  321. sed -i 's/# DBHost=localhost/DBHost=localhost/g' /usr/local/zabbix/etc/zabbix_server.conf
  322. sed -i 's/# DBPassword=/DBPassword=zabbix/g' /usr/local/zabbix/etc/zabbix_server.conf
  323. sed -i 's/# DBPort=3306/DBPort=3306/g' /usr/local/zabbix/etc/zabbix_server.conf
  324. sed -i 's$# FpingLocation=/usr/sbin/fping$FpingLocation=/usr/sbin/fping$g' /usr/local/zabbix/etc/zabbix_server.conf
  325. sed -i 's$# DBSocket=/tmp/MysqL.sock$DBSocket=/usr/local/MysqL/MysqL.sock$g' /usr/local/zabbix/etc/zabbix_server.conf
  326. mkdir -p /usr/local/zabbix/logs && chown -R zabbix:zabbix /usr/local/zabbix/
  327.  
  328. cat <<EOF >/etc/ld.so.conf
  329. include ld.so.conf.d/*.conf
  330. /usr/local/MysqL/lib
  331. /usr/local/lib
  332. EOF
  333. /usr/local/Nginx/sbin/Nginx -s reload && /etc/init.d/PHP-fpm restart &>/dev/null #重新加载Nginx PHP
  334. if [ "$?" -eq 0 ];then #如果加载成功
  335. action "zabbix主配修改成功,正在进行相关的配置~" /bin/true #那么输出此信息
  336. else #否则
  337. action "zabbix发生了严重的错误!!!" /bin/false #否则输出失败
  338. exit 1 #退出此脚本
  339. fi #结束if语句
  340. cd /usr/local/src/zabbix-3.2.1/ && { #如果进入zabbix解压目录成功 ,那么执行以下操作
  341. cp misc/init.d/fedora/core/zabbix_server /etc/rc.d/init.d/zabbix_server
  342. cp misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
  343. chmod +x /etc/rc.d/init.d/zabbix_server
  344. chmod +x /etc/rc.d/init.d/zabbix_agentd
  345. chkconfig --add zabbix_server
  346. chkconfig --add zabbix_agentd
  347. chkconfig zabbix_server on
  348. chkconfig zabbix_agentd on
  349. }
  350.  
  351. if [ "$?" -eq 0 ];then #以此类推这里不在解释,写的手累,谅解
  352. action "复制zabbix启动项成功" /bin/true
  353. else
  354. action "复制zabbix启动项失败!!" /bin/false
  355. exit 1
  356. fi
  357. sed -i 's$BASEDIR=/usr/local$BASEDIR=/usr/local/zabbix/$g' /etc/rc.d/init.d/zabbix_server
  358. sed -i 's*PIDFILE=/tmp/$BINARY_NAME.pid*PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid*g' /etc/rc.d/init.d/zabbix_server
  359. sed -i 's$BASEDIR=/usr/local$BASEDIR=/usr/local/zabbix/$g' /etc/rc.d/init.d/zabbix_agentd
  360. sed -i 's*PIDFILE=/tmp/$BINARY_NAME.pid*PIDFILE=/usr/local/zabbix/logs/$BINARY_NAME.pid*g' /etc/rc.d/init.d/zabbix_agentd
  361.  
  362. ldconfig && systemctl daemon-reload
  363. /etc/init.d/zabbix_agentd start &>/dev/null
  364. /etc/init.d/zabbix_server start &>/dev/null
  365. if [ "$?" -eq 0 ];then
  366. action "zabbix监控启动成功,正在进行配置页面,请稍后!!!" /bin/true
  367. else
  368. action "zabbix监控启动失败,请检查环境!!!" /bin/false
  369. exit 1
  370. fi
  371. mkdir /usr/local/Nginx/html/zabbix/
  372. if [ -d /usr/local/Nginx/html/zabbix/ ];then
  373. cp -r /usr/local/src/zabbix-3.2.1/frontends/PHP/* /usr/local/Nginx/html/zabbix/
  374. else
  375. action "zabbix目录创建失败" /bin/false
  376. exit 1
  377. fi
  378. chown -R Nginx:Nginx /usr/local/Nginx/html/zabbix
  379.  
  380. if [ $? -eq 0 ];then #最后输出以下信息,对以上的命令执行进行判断
  381. echo "zabbix部署成功,请您访问http://IP/zabbix"
  382. else
  383. echo "zabbix部署失败,请检查环境!!!"
  384. exit 1
  385. fi
  386. }
  387.  
  388. function TC (){ #定义退出脚本
  389. echo -e "${red_col}此管理程序已经成功退出!\n${reset_col}"
  390. exit 0 #退出
  391. }
  392.  
  393. function GJ(){ #编写关机脚本
  394. echo -e "${red_col}即将关机,请稍后....\n${reset_col}"
  395. shutdown -h now #关机
  396. }
  397.  
  398. function zong(){ #定义总的函数 也就是结局
  399. while : #while :循环条件为真
  400. do #do
  401. panduan #一直循环判断,实现了一直等待让用户输入
  402. case $NUM in #case 如果$NUM变量中
  403. 1) #输入的是1
  404. Yum_check #那么调用YUM函数
  405. ;;
  406. 2) .......等等 以此类推这里不在解释,写的手累,谅解
  407. Nginx_server
  408. ;;
  409. 3)
  410. Apache_server
  411. ;;
  412. 4)
  413. MysqL_server
  414. ;;
  415. 5)
  416. PHP_server
  417. ;;
  418. 6)
  419. LNMP
  420. ;;
  421. 7)
  422. zabbix_server
  423. ;;
  424. 8)
  425. TC
  426. ;;
  427. 9)
  428. GJ
  429. ;;
  430. esac #最后使用esac结束case语句
  431. done #done结束while循环
  432. }
  433. zong #最后调用总的函数

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

猜你在找的Bash相关文章