OS 기술/Linux

SNMP Config 셋팅 스크립트

DongT 2024. 5. 28. 08:25
728x90
반응형

SNMP를 이용한 시스템정보수집, 관제, 로그수집 등을 수행할 수 있다.

매번 snmpd.conf 를 셋팅하는게 번거로워서 스크립트로 만들었다.

최소한의 설정만 넣었기 때문에 필요에 따라 추가 설정은 수작업으로 넣어야한다.

 


 

** 주의) 인터넷에서 받는 스크립트들은 테스트 환경에서 먼저 적용해보고 운영환경에서 적용하는걸 권장합니다.


 

아래는 snmp를 이용한 PRTG 셋팅 예시 스크립트이다.


우분투 버전

SNMPset_Ubu22.sh
0.00MB

#!/bin/sh

# SNMP 설치여부 확인
if dpkg-query -W -f='${Status}' snmpd 2>/dev/null | grep -q "install ok installed"; then
echo ""
else
    echo "snmpd 서비스가 설치되어 있지 않습니다."
echo "snmpd 서비스가 Custom으로 설치 되어 있을 수 있습니다."
read -p "스크립트를 이어서 진행하시겠습니까? [Y/n] (default n) : " proceed
if [ "$proceed" = "Y" ]; then
echo "스크립트를 진행합니다."
else
echo "스크립트를 중단합니다."
exit 1
fi
fi



# SNMP 부팅시 켜지게 설정
echo "SNMP Service StartUP Setting"
echo ""
systemctl enable snmpd

# SNMP 설정파일 설정
echo "SNMP Config Setting"

# SNMP 설정 파일 정의
snmpconf_file="/etc/snmp/snmpd.conf"
snmpconf_back="/etc/snmp/snmpd.conf_bak"

# SNMP 설정 백업
if [ -f "$snmpconf_file" ]; then
    cp "$snmpconf_file" "$snmpconf_back"
else
    echo "파일이 존재하지 않습니다: $snmpconf_file"
    exit 1
fi
echo ""

# PRTG 정보 입력
read -p "Enter PRTG Probe IP : " prtgip
read -p "Enter PRTG Community : " prtgcomm

# 백업 파일 확인하고 설정 밀어넣기
if [ -f "$snmpconf_back" ]; then
cat <<EOF> /etc/snmp/snmpd.conf
sysLocation    Sitting on the Dock of the Bay
sysContact     Me <me@example.org>

sysServices    72

master  agentx

agentaddress  udp:161,udp6:[::1]:161

view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1

rocommunity $prtgcomm $prtgip

rouser authPrivUser authpriv -V systemonly
EOF
else
    echo "백업 파일이 존재하지 않습니다: $snmpconf_file"
    exit 1
fi
echo ""
echo "PRTG SNMP Setting Complete"
echo ""
echo "SNMP Service ReStart"
systemctl restart snmpd
echo ""
systemctl status snmpd

 

아래는 실행 결과

 

config 설정 확인

 


덤) CentOS용으로도 만들어봤다.

SNMPset_Centos7.sh
0.00MB

#!/bin/sh

echo "CentOS 7버전용 스크립트입니다"
echo ""

# SNMP 설치여부 확인
if rpm -q net-snmp; then
echo ""
else
    echo "snmpd 서비스가 설치되어 있지 않습니다."
echo "snmpd 서비스가 Custom으로 설치 되어 있을 수 있습니다."
read -p "스크립트를 이어서 진행하시겠습니까? [Y/n] (default n)" proceed
if [ "$proceed" = "Y" ]; then
echo "스크립트를 진행합니다."
else
echo "스크립트를 중단합니다."
exit 1
fi
fi



# SNMP 부팅시 켜지게 설정
echo "SNMP Service StartUP Setting"
echo ""
systemctl enable snmpd

# SNMP 설정파일 설정
echo "SNMP Config Setting"

# SNMP 설정 파일 정의
snmpconf_file="/etc/snmp/snmpd.conf"
snmpconf_back="/etc/snmp/snmpd.conf_bak"

# SNMP 설정 백업
if [ -f "$snmpconf_file" ]; then
    cp "$snmpconf_file" "$snmpconf_back"
else
    echo "파일이 존재하지 않습니다: $snmpconf_file"
    exit 1
fi
echo ""

# PRTG 정보 입력
read -p "Enter PRTG Probe IP : " prtgip
read -p "Enter PRTG Community : " prtgcomm

# 백업 파일 확인하고 설정 밀어넣기
if [ -f "$snmpconf_back" ]; then
cat <<EOF > /etc/snmp/snmpd.conf
com2sec mynetwork $prtgip  $prtgcomm

group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
group MyRWGroup usm        initial
group MyROGroup v1         mynetwork
group MyROGroup v2c        mynetwork
group MyROGroup usm        mynetwork

view all    included  .1                               80

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none
EOF
else
    echo "백업 파일이 존재하지 않습니다: $snmpconf_file"
    exit 1
fi
echo ""
echo "PRTG SNMP Setting Complete"
echo ""
echo "SNMP Service ReStart"
systemctl restart snmpd
echo ""
systemctl status snmpd


 

728x90