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