유닉스 파일 시스템을 체크하여 SMS을 보내는 쉘 프로그램

아래는 간단히 유닉스 파일시스템을 읽어 Config.ini에 정해놓은 용량보다 크게되면
SMS를 전송하는 쉘스크립트이다.

#! /bin/ksh -f
MANPATH=/usr/man:/usr/share/man:/opt/SUNWspro/man

# Set up the oracle variables:
ORACLE_HOME=/rtd_orahome
ORACLE_SID=XXXX
ORACLE_TERM=vt100
ORAWEB_HOME=$ORACLE_HOME/ows/3.0
ORAWEB_SITE=web

ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data
TNS_ADMIN=$ORACLE_HOME/network/admin
ORACLE_OWNER=AAAA
LANG=korean
NLS_LANG=American_America.KO16KSC5601

# Set up the search paths:
PATH=/opt/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/ucb:/etc:/usr/sbin:/usr/openwin/bin:$ORACLE_HOME/bin:$ORAWEB_HOME/bin:.
LD_LIBRARY_PATH=/opt/SUNWspro/lib:/usr/lib:/usr/ccs/lib:/usr/openwin/lib:/usr/ucblib:$ORACLE_HOME/lib
export PATH ORACLE_HOME ORACLE_SID ORACLE_TERM LANG LD_LIBRARY_PATH ORAWEB_HOME MANPATH ORA_NLS32 TNS_ADMIN ORACLE_OWNER
#=============================================================================================================

SMS_CLIENT=/rtd_home/monitor/bin/SmsSender 
CONFIG_FILE=/rtd_home/monitor/cfg/config.ini
HOST_NAME=`hostname`
#let intCnt=0 
grep -w "FILESYSTEM" $CONFIG_FILE | while read strCategory strFileSystemNm intDangerCapacity
do
	intCurCapacity=`df -k $strFileSystemNm |tail -1|awk '{print $5}' |cut -d % -f 1` 
	if (( intCurCapacity > intDangerCapacity ))
	then
 		intCurCapacity=`df -k $strFileSystemNm |tail -1|awk '{print $5}' |cut -d % -f 1`
		if (( intCurCapacity > intDangerCapacity )) 
		then
			grep -w "FILESYSTEM_NOTIFY_PHONE_NUMBER" $CONFIG_FILE | while read strCategory NOTIFY_PHONE_NUMBER
			do
				$SMS_CLIENT 'Moramcnt' $NOTIFY_PHONE_NUMBER 021234567 "$HOST_NAME Server['FILE SYSTEM $strFileSystemNm'] exceeded $intDangerCapacity%. Current : $intCurCapacity%"
				sleep 1
			done
			print `date '+%Y-%m-%d %T'` "$HOST_NAME :FILE SYSTEM $strFileSystemNm'이 $intDangerCapacity%를 넘었습니다. 현재 : $intCurCapacity%" >> /rtd_home/monitor/logs/check_filesystem_err.log
			#let intCnt=intCnt+1
		else
			print `date '+%Y-%m-%d %T'` "$HOST_NAME : File System 정상 $strFileSystemNm : $intCurCapacity%" >> /rtd_home/monitor/logs/check_filesystem.log
		fi
	else
		print `date '+%Y-%m-%d %T'` "$HOST_NAME : File System 정상 $strFileSystemNm : $intCurCapacity%" >> /rtd_home/monitor/logs/check_filesystem.log
	fi
done
exit 0

Config.ini파일의 내용은 다음과 같다.

[FILE_SYSTEM]
FILESYSTEM					/			90
FILESYSTEM					/tmp			90
FILESYSTEM					/rtd_orahome		90
FILESYSTEM					/rtd_home		92
FILESYSTEM					/rtd_data1		90
FILESYSTEM					/rtd_data2		90
FILESYSTEM					/rtd_data3		90
FILESYSTEM					/rtd_data4		90
FILESYSTEM					/rtd_data5		90
FILESYSTEM					/rtd_data6		90
FILESYSTEM					/rtd_data7		90
FILESYSTEM					/rtd_data8		90
FILESYSTEM					/rtd_data9		90
FILESYSTEM					/rtd_data10		90
FILESYSTEM					/backup			95

그리고, SMSSender프로그램은 이전글 “오라클 Alert Log에 에러 발생시 SMS로 전송하는 쉘 스크립트” 을 참고하면된다.

태그 , , , ,

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다