Zabbix_agent d-install.sh (script deployment zabbix_agent D service)

Keywords: Linux Zabbix iptables SELinux CentOS

The original article was published in cu: 2016-05-20

Be based on http://www.cnblogs.com/netonline/p/7406598.html(http://blog.chinaunix.net/uid-26168435-id-5730201.html Write a simple script to simplify the deployment of zabbix_agnetd.
Notes for script operation:
1. script and zabbix-3.0.1.tar.gz run in the same directory;
2. Because the name of the zabbix installation file does not use variables, it has been written to death in script. Although it can be changed, it needs to modify the corresponding parts of the foot synchronously.
3. script involves changing the running directory, so use "source" or "..." to run script, such as "source xx.sh" or ". / xx.sh";
4. script runs based on centos6.x. Note the difference between centos7.x and centos7.x. The main reason is that centos7.x does not have iptables by default and needs to prepare the environment of iptables in advance.

#!/bin/bash
# Program:
#     Automatic install zabbix_agentd-3.0.1 in centos-6.x-x86_64 by the scripts.
# Usage:
#     It relate to change directory, please use source or . to execute this scripts, the others methods will fail.
# History:
#     2016/05/10    v0.1
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH

# Check if user is root.
if [ $(id -u) != "0" ]; then
    echo "Error: You must be root to run this script, please use root to install zabbix_agentd!"
    exit 1
fi

# Function: check the zabbix_server ip address which has be inputed.
checkip() {
        echo $1 | egrep -q '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$' > /dev/null
            if [ $? -ne 0 ]; then
                echo "Error: Please input correct format IP address!"
                exit 1
            fi

        ipaddr=$1
        ip1=`echo $ipaddr | awk -F. '{print $1}'`
        ip2=`echo $ipaddr | awk -F. '{print $2}'`
        ip3=`echo $ipaddr | awk -F. '{print $3}'`
        ip4=`echo $ipaddr | awk -F. '{print $4}'`

        for num in $ip1 $ip2 $ip3 $ip4; do
            if [ $num -ge 255 ] || [ $num -lt 0 ]; then
                echo "Error: Please input correct format IP address!"
                exit 1
            fi
        done

        return 0
}

# Input zabbix_server's ip address.
read -p "Please input zabbix_server's ip address[ie: 192.168.1.1]: " zabbixserverip
checkip $zabbixserverip
echo "OK! Your zabbix_server is ${zabbixserverip}!"

# Set iptables rules, zabbix server will detect agentd by tcp 10050, and zabbix_agentd will send trapper to server by tcp 10051.
iptables -I INPUT -s $zabbixserverip -p tcp -m state --state NEW -m tcp --dport 10050 -j ACCEPT
iptables -I OUTPUT -d $zabbixserverip -p tcp -m state --state NEW -m tcp --dport 10051 -j ACCEPT
service iptables save

# Check selinux.
if [ $(getenforce) = "Enforcing" ]; then
    sed -i 's|SELINUX=enforcing|SELINUX=disabled|g' /etc/selinux/config ; sed -i 's|SELINUXTYPE=targeted|#SELINUXTYPE=targeted|g' /etc/selinux/config && setenforce 0
fi

# Create zabbix group and user.
groupadd zabbix
useradd -g zabbix -s /sbin/nologin zabbix

# Install zabbix_agentd
cur_dir=$(pwd)
tar -zxvf $cur_dir/zabbix-3.0.1.tar.gz -C /usr/local/src/
cd /usr/local/src/zabbix-3.0.1 
./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
cd ~

# Add soft link to zabbix_agentd execute file.
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ 
ln -s /usr/local/zabbix/bin/* /usr/local/bin/

# Modify zabbix_agentd config file.
sed -i "s|Server=127.0.0.1|Server=${zabbixserverip}|g" /usr/local/zabbix/etc/zabbix_agentd.conf
sed -i '262s|# Include=/usr/local/etc/zabbix_agentd.conf.d/|Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/|g' /usr/local/zabbix/etc/zabbix_agentd.conf
sed -i 's|# UnsafeUserParameters=0|UnsafeUserParameters=1|g' /usr/local/zabbix/etc/zabbix_agentd.conf

# Set zabbix_agentd automatic start scripts.
cp /usr/local/src/zabbix-3.0.1/misc/init.d/fedora/core/zabbix_agentd /etc/rc.d/init.d/zabbix_agentd
chown zabbix:zabbix /etc/rc.d/init.d/zabbix_agentd
chmod +x /etc/rc.d/init.d/zabbix_agentd
sed -i 's|BASEDIR=/usr/local|BASEDIR=/usr/local/zabbix|g' /etc/rc.d/init.d/zabbix_agentd
chkconfig --level 35 zabbix_agentd on

# Start zabbix_agentd service.
service zabbix_agentd start

# Check zabbix_agentd service.
if [ $(netstat -tnlp | grep zabbix_agentd | awk '{print $7}' | awk -F/ '{print $2}') = "zabbix_agentd" ]; then
    echo -e "\033[32m [INFO]Zabbix_agentd has installed and started! \033[0m"
else
    echo -e "\033[31m [ERROR]Zabbix_agentd has not started! \033[0m"
fi

# Clean install package.
rm -rf /usr/local/src/zabbix-3.0.1

Posted by tobykw13 on Tue, 12 Feb 2019 02:18:18 -0800