zoukankan      html  css  js  c++  java
  • shell脚本——批量安装zabbix-agent5.0

    举例:
    给元数据都为elk的主机列表中所有主机安装并配置zabbix-agent5.0

    #!/bin/bash
    # 用来在运行结果之前,先输出执行的那一行命令。
    set -x
    # 主机列表
    host_array=(
        "192.168.172.22"
        "192.168.172.23"
    )
    # 获取安装机器的主机名
    for host_ip in ${host_array[@]}
    do 
        hostname=`ssh ${host_ip} 'hostname'`
    done
    # 定义元数据
    hostmetadata=elk
    
    # 安装并配置zabbix-agent
    function install_zabbixagent() 
    {
        host_ip=${1}
        # install zabbix-agent
        echo "start install zabbix-agent in host:${host_ip}"
        echo `ssh ${host_ip} "rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm"`
        echo `ssh ${host_ip} "yum clean all"`
        echo `ssh ${host_ip} "yum repolist"`
        echo `ssh ${host_ip} "yum install -y zabbix-agent"`
        echo "yum repo is ok and zabbix-agent has installed"
        # change configure file
        echo `ssh ${host_ip} "sed '/^Server=127.0.0.1/cServer=172.16.108.137' -i /etc/zabbix/zabbix_agentd.conf"`
        echo `ssh ${host_ip} "sed '/^ServerActive=127.0.0.1/cServerActive=172.16.108.137' -i /etc/zabbix/zabbix_agentd.conf"`
        echo `ssh ${host_ip} "sed 's/Hostname=Zabbix server/Hostname=${hostname}/g' -i /etc/zabbix/zabbix_agentd.conf"`
        echo `ssh ${host_ip} "echo "EnableRemoteCommands=1" >> /etc/zabbix/zabbix_agentd.conf"`
        echo `ssh ${host_ip} "echo "UnsafeUserParameters=1" >> /etc/zabbix/zabbix_agentd.conf"`
        echo `ssh ${host_ip} "echo HostMetadata="$hostmetadata" >> /etc/zabbix/zabbix_agentd.conf"`
        # start service
        echo `ssh ${host_ip} "systemctl start zabbix-agent.service"`
        echo `ssh ${host_ip} "systemctl enable zabbix-agent.service"`
    }
    
    # 判断是否已经安装zabbix-agent
    function is_install_zabbixagent() 
    {
        result=`ssh ${1} "yum list installed|grep zabbix-agent"`
        # -z zero 判断result的值是否为0,为0则为真
        if [ -z "${result}" ];then
            return 0
        else
            return 1
        fi 
    }
    
    # main函数,shell数组中使用@或*可以获取数组的全部元素
    function main() 
    {
        for host_ip in ${host_array[@]}
        do
            # get hostname
            hostname=`ssh ${host_ip} 'hostname'`
            # 判断返回值是否安装了zabbix-agent
            is_install_zabbixagent ${host_ip}
            # 返回值为0,即没有安装,调用函数
            if [ $? -eq 0 ];then
                install_zabbixagent ${host_ip}
                sleep 20s
            else
                echo "this host ${host_ip} already installed zabbix-agent"
            fi
        done
    }
    
    main
    

    查看机器执行完脚本后配置文件的关键信息:

    sed -n '/^#/!p' /etc/zabbix/zabbix_agentd.conf | sed -n '/^$/!p' 
    

    先做免密,免密命令:

    ssh-keygen
    ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.172.22 
    ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.172.23
    
  • 相关阅读:
    《面试题 03.05. 栈排序》——惰性更新
    CTF<密码学> writeup 传统知识+古典密码
    有趣的数学(二)
    【】Dedecms友情链接去掉LI的方法介绍
    【】【】打工子弟学校学生们的中国梦何时圆?
    Discuz! 7.2 防注册机注册+发垃圾帖的解决方法
    Windows 8 常用快捷键
    Win7 64位系统下Auto CAD 2010注册激活,出现警告:Make sure you can write to current directory...
    怎么从EXCEL或WORD里提取图片?
    如何将windows xp系统下的outlook express6.0的邮件,帐号及通迅录导入Office Outlook xp/2003/2007中...
  • 原文地址:https://www.cnblogs.com/even160941/p/15237872.html
Copyright © 2011-2022 走看看