Programming/Bash Shell Script

[Bash Shell Script] zabbix-agent 자동 설치 쉘 스크립트

Nirsa 2020. 5. 28. 14:01
반응형

 

  • zabbix-agent 설치 쉘 스크립트 version.1

쉘 스크립트를 실행할 때 인자값을 주어 실행하는 방식 입니다. sh [스크립트명] [자빅스 서버 IP] [firewalld 설정 여부] 와 같이 실행하시면 되고 firewalld 설정을 원한다면 set-firewalld를, 원하지 않는다면 두번째 인자값은 공백으로 두어도 무관 합니다.

  • ex1) /root/zbx-agent-install.sh 에 코드를 저장 하였고, 자빅스 서버의 IP가 192.168.0.1, firewalld 설정을 할 경우
  •        --> sh /root/zbx-agent-install.sh 192.168.0.1 set-firewalld
  • ex2) /etc/zbx-agent-install.sh 에 코드를 저장 하였고, 자빅스 서버의 IP가 192.168.100.20, firewalld 설정을 하지 않을 경우
  •        --> sh /etc/zbx-agent-install.sh 192.168.100.20
#!/bin/bash
get_hostname=`hostname`

rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm > /dev/null 2>&1
yum -y install zabbix-agent > /dev/null 2>&1

sed -i "s/Server=127.0.0.1/Server=$1/gi" /etc/zabbix/zabbix_agentd.conf > /dev/null 2>&1
sed -i "s/ServerActive=127.0.0.1/ServerActive=$1/gi" /etc/zabbix/zabbix_agentd.conf > /dev/null 2>&1
sed -i "s/Hostname=Zabbix server/Hostname=$get_hostname/gi" /etc/zabbix/zabbix_agentd.conf > /dev/null 2>&1

if [ "$2" == "set-firewalld" ];then
        firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=$1 port protocol=tcp port=10050 accept" > /dev/null 2>&1
        firewall-cmd --reload > /dev/null 2>&1
fi
systemctl restart zabbix-agent
systemctl enable zabbix-agent > /dev/null 2>&1

 

  • zabbix-agent 설치 쉘 스크립트 version.2

Master Zabbix 서버의 IP와 firewalld 설정 여부를 직접 기입하는 스크립트 입니다.

#!/bin/bash
get_hostname=`hostname`

echo -e "\x1b[31m******************************************************************"
echo -e "*            zabbix-agent 설치 스크립트를 시작 합니다            *"
echo -e "*                   https://nirsa.tistory.com                    *"
echo -e "******************************************************************\x1b[0m"
echo -e "\n"

while true; do
    echo "########################## Master ip 수집#########################"
    read -p "# Master Zabbix 서버의 IP를 적어 주세요:" get_masterip
    read -p "# 입력하신 IP가 확실 한가요?(y/n):" yn
    case $yn in
        [Yy]* ) break;;
        * ) echo -e "     ==> IP를 정확히 입력한 후 물음에 Y를 입력 해주세요.\n";;
    esac
done

while true; do
    echo -e "\n"
    echo "######################### Firewalld 설정 #########################"
    echo "############# Firewalld가 실행중인 상태여야 합니다 ###############"
    echo "############ S.ip [Master Zabbix] Port 10050/tcp 허용#############"
    read -p "# firewalld 설정을 진행 하시겠습니까?(y/n): " get_firewalld
    case $get_firewalld in
        [Yy]* )
                firewall-cmd --permanent --zone=public --add-rich-rule="rule family=ipv4 source address=$get_masterip  port protocol=tcp port=10050 accept" > /dev/null 2>&1
                firewall-cmd --reload > /dev/null 2>&1
                break;;
        [Nn]* ) break;;
        * ) echo -e "    ==> yes 또는 no를 입력 해주세요..\n";;
    esac
done
    echo "##################################################################"

echo "# zabbix-agent 설치를 시작 합니다."
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm > /dev/null 2>&1
yum -y install zabbix-agent > /dev/null 2>&1

echo "# /etc/zabbix/zabbix_agentd.conf 파일을 작성 합니다."
sed -i "s/Server=127.0.0.1/Server=$get_masterip/gi" /etc/zabbix/zabbix_agentd.conf > /dev/null 2>&1
sed -i "s/ServerActive=127.0.0.1/ServerActive=$get_masterip/gi" /etc/zabbix/zabbix_agentd.conf > /dev/null 2>&1
sed -i "s/Hostname=Zabbix server/Hostname=$get_hostname/gi" /etc/zabbix/zabbix_agentd.conf > /dev/null 2>&1

echo "# zabbix-agent 서비스를 실행/등록 합니다."
systemctl restart zabbix-agent
systemctl enable zabbix-agent > /dev/null 2>&1

echo -e "\n"
echo -e "\x1b[31m******************************************************************"
echo -e "*          zabbix-agent 설치 스크립트가 종료 되었습니다.         *"
echo -e "*                   https://nirsa.tistory.com                    *"
echo -e "******************************************************************\x1b[0m"

 

스크립트 실행 시 아래와 같은 화면으로 진행 됩니다.

 

반응형