linux下安装zabbix服务器shell-自动化运维 -阿里云开发者社区

开发者社区> 开发与运维> 正文

linux下安装zabbix服务器shell-自动化运维

简介: 分布式网络监控平台
#!/bin/bash
###################check network###################
echo '正在检测网络是否和zabbix官方通畅......'
ping -c 2 www.zabbix.com > /dev/null        # 将ping -c 2  拼两次的消息结果重定向到空洞/dev/null,清除消息记录
if [ $? != 0 ];then                        # $? 是上一个程序执行是否成功的标志,如果执行成功则$? 为0,否则 不为0
 echo "请检查网络!"
 exit                                    # 运行到此情况(网络异常ping不通);就全局退出脚本 [ˈɛgzɪt] exit 出口
else
 echo "网络正常!"                        # 正常情况不仅仅打印一句话,然后继续往下执行
fi
###################set yum#################################
yum install -y ntpdate    
ntpdate -u cn.pool.ntp.org                    
timedatectl set-timezone Asia/Shanghai    #     
systemctl start ntpd                    # start [stɑrt] 开始;开始执行                
systemctl enable ntpd                    # enable [ɛˈnebəl] 启动;加入开启启动
#时间矫正
rm -rf /var/run/yum.pid                    # yum.pid 作用:防止启动多个进程副本;此处不需要
yum -y install wget
system=`cat /etc/redhat-release | awk -F "." '{print $1}'`
                                    # release [riˈlis] 发布; system [ˈsɪstəm] 系统
                                     # 查看系统版本,awk字段处理以点为分隔符:打印第一列;将结果赋值给变量 system
if [ "$system" == 'CentOS Linux release 7' ];then
                                    # if 判断变量 字符串绝对等于 指定字符串,then 然后执行
    rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
                                    # U更新,升级rpm ;v表示显示安装过程,h表示显示进度
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
                                    # wget -O 下载文件到指定目录;此处是替换原有文件
    systemctl stop firewalld                # 关闭防火墙 firewall  [ˈfaɪrwɑl]
setenforce 0                            # 临时关闭selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
                                    #永久关闭selinux ; disabled [dɪˈsebəld] 废除;  config [kən'fɪg] 配置,设置
elif [ "$system" == 'CentOS release 6' ];then
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
                                    # base [bes] 基地;mirror [ˈmirəz] 镜像,镜子
    rpm -Uvh http://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
    service iptables stop
setenforce 0                            # 临时关闭selinux
sed -i "s/SELINUX\=.*/SELINUX=disabled/g" /etc/selinux/config
                                    #永久关闭selinux ; disabled [dɪˈsebəld] 废除;  config [kən'fɪg] 配置,设置
fi
##################install###############################
eth=`ip a| grep "BROADCAST" | awk -F ":" 'NR==1{print $2}' | sed "s/ //g"` ; echo "网卡名为:"$eth ;
                                                                                 # 命令 ip a 查看网卡 过滤;broadcast  [ˈbrɔːdkɑːst] >广播;字段的行
                                                                                 # awk -F ":" 以冒号为分隔符 ; 选择第一行,第二列,sed删除空格
                                        # 符号  ; 分号表示第一条命令结束,第二条开始
ethCatalog=$(find / -name "*$eth" | grep "/etc/" | sed "s/ //g" ) ;  echo "网卡路径为: "  $ethCatalog
                                        # catalog [ˈkætəlɔg] 目录
                                        # find 查找网卡名称的路径,grep 过滤/etc 目录下网卡名称。sed删除空格
ip=$(cat $ethCatalog | grep IPADDR | awk -F "=" 'NR==1{print $2}' | sed "s/ //g") ; echo "IP地址为: " $ip
                                                                                # 查看网卡文件,过滤IPADDR的行,awk -F"=" 分隔符是冒号,打印第一行第二列
sleep 5                                     # 等待5秒钟;sleep [slip] 睡眠
server(){
yum -y install httpd mariadb mariadb-server php php-mysql php-bcmath php-mbstring
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
                                        # 安装mariadb  等软件
sed -i s/index.html/index.php/g /etc/httpd/conf/httpd.conf
                                        # 修改默认访问文件
#######################修改配置文件##################
# sed -i "N;286i\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
# sed -i "N;880i\date.timezone = Asia/Shanghai" /etc/php.ini
NRhttpd=$(cat -n /etc/httpd/conf/httpd.conf | grep "AddType application/x-gzip .gz .tgz" | awk -F" " '{print $1}' | sed "s/ //g")
                # add type  [æd] [taɪp] 添加类型; application [ˌæpləˈkeʃən] 运用;
                # cat -n 查看文件内容并显示行号
                # grep 匹配字符串所在行的整行内容
                # awk -F" " 字段处理指定分隔符为空格,打印第一列;删除空格
echo "根据字符串查找的文本中的行号:"$NR
sed -i "/AddType application\/x-httpd-php .php/d" /etc/httpd/conf/httpd.conf
                # 在写入前,先删除将要插入的字符串,保证不会重复插入
sed -i "$NRhttpd a\AddType application/x-httpd-php .php" /etc/httpd/conf/httpd.conf
                # $NR a\  根据查找到行号,的下一行插入字符串
                # i\  是上一行插入字符串
NRdate=`cat -n /etc/php.ini | grep ";date.timezone =" | awk -F" " '{print $1}' | sed "s/ //g"` ; echo $NRdate
sed -i "/Asia\/Shanghai/d" /etc/php.ini
sed -i "$NRdate a\date.timezone = Asia/Shanghai" /etc/php.ini 
                # 其中符号 ;  表示注释符号。
####################################################
/usr/bin/systemctl start mariadb            # 重启mariadb数据库
/usr/bin/systemctl enable mariadb        # enable [ɛˈnebəl] 启动;开机启动
mysql -e "set password = password('WWWeisccn111@#')"
                                    # 进入数据库设置密码
mysql -uroot -pWWWeisccn111@# -e "create database zabbix character set utf8 collate utf8_bin;"
                                    # create  [kriˈet] 创建 ;database [ˈdædəˌbeɪs] 数据库;character [ˈkɛrɪktər] 字符,设置字符类型,collate [kəˈlet] 核对字符
                                    # 登陆数据库,创建库编码为utf8
mysql -uroot -pWWWeisccn111@# -e "grant all on zabbix.* to 'zabbix'@'localhost' identified by '123'"
                                    # grant [grænt] 授权;all 所有,on 在...上;    授予zabbix账户在 localhost [ləʊkæl'həʊst] 本机的所有权限; identified [aɪ'dentɪfaɪd] 识别(设置密码)
                                    # identified [aɪ'dentɪfaɪd] 标识;by 由 123密码:设置zabbix 的 DBPassword
                                    # 123 是密码,需要单引号,数据库账户和本机需要
# 此处已经修改bugfind查看数据库文件
createmysql=$(find / -name "create.sql.gz") ; 
echo "$createmysql 
数据库文件导入中,请耐心等待!"
                                    # 查找文件路径并打印
/usr/bin/zcat $createmysql | mysql -uzabbix -p123 zabbix
                                    # 导入数据库,登陆数据,用户名zabbix 密码123,并且进入数据库zabbix
                                    # zcat 查看压缩包的文件,管道到登陆数据库里面去执行
# sed -i "N;110i\DBPassword=123" /etc/zabbix/zabbix_server.conf  # 配置zabbix密码
NRuser=`cat -n /etc/zabbix/zabbix_server.conf | grep "DBUser=zabbix" |awk '{print $1}' | sed "s/ //g"` ; echo $NRuser
sed -i "/DBPassword=123/d" /etc/zabbix/zabbix_server.conf
sed -i "$NRuser a\DBPassword=123" /etc/zabbix/zabbix_server.conf
/usr/bin/systemctl restart httpd zabbix-server zabbix-agent
/usr/bin/systemctl enable httpd zabbix-server zabbix-agent
                                    # enable [ɛˈnebəl] 启动; 开机启动
echo "请用浏览器访问:http://$ip/zabbix
安装配置:
数据库名:zabbix
数据库用户:zabbix
密码:123
登陆账户/密码:Admin/zabbix"
}
agent(){
yum -y install zabbix-agent
read -p "请输入Zabbix-serve的ip地址:" server_IP
sed -i s/127.0.0.1/$server_IP/g /etc/zabbix/zabbix_agentd.conf
 /bin/systemctl restart zabbix-agent.service
}
##################install menu###########################
MYDATE=`date +%d/%m/%y`            # 定义一个时间变量:格式化字符为:十进制日期,月份,年份抹除100
THIS_HOST=`hostname -s`
USER=`whoami`
while :
do
  tput clear
  echo "                        
# cat 与echo 相似,这里打印显示一段话;由 aMAYDAY  开始,也由它来结束;
---------------------------------------------------------
User:$USER            Host:$THIS_HOST        Date:$MYDATE
# cat 这里直接打印字符串和变量的值
---------------------------------------------------------
            1:安装 zabbix-server和zabbix-agent
            2:只安装 zabbix-agent
        H:帮助
            Q:退出
---------------------------------------------------------
"                            # 结束打印标记
echo -e -n "\tYour Choice [1,2,Q]>"        # -e 开启特殊字符转换 \t上一行换行;-n 它的下一行不换行打印;
read CHOICE                            # 紧接着上一行的打印字符串,接着让用户输入信息,将输入信息写入变量 $CHOICE
  case $CHOICE in                        # 判断变量是一下情形
    1) server                            # 为 1 执行 server 函数
       ;;
    2) agent
       ;;
    3) who
       ;;
    H|h)                            # 输入为 H 则打印一段话
       echo "
          Zabbix-server是服务端,Zabbix-agent是客户端!
"                        # 打印结束,MAYDAY 他为开始,也以他为结束
       ;;
    Q|q) exit 0                        # 输入Q 退出
    ;;
    *)  echo -e "\t\007 输入有有误!"    # 其他所有情况,提示
       ;;
  esac                            # case 判断结束
echo -e -n "\t按任意键返回菜单!"
read DUMMY
done
# 脚本执行: yum install -y wget ; rm -rf zabbix.sh ; wget eisc.cn/file/shell/zabbix.sh ; chmod 755 zabbix.sh ; source zabbix.sh

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章