Shell編程之批量安裝服務腳本實例剖析
阿新 • • 發佈:2018-04-14
exit mysq 導入數據 div zabbix sql數據庫 groupadd .net tag
今天分享一下昨天寫過的一個小腳本運行的整個過程運行結果如下:
剖析如下:
#!/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 #最後調用總的函數
Shell編程之批量安裝服務腳本實例剖析