문자열을 grep하고 이메일 경고를 보내기 위한 모니터링 셸 스크립트 로깅

문자열을 grep하고 이메일 경고를 보내기 위한 모니터링 셸 스크립트 로깅

이것은 grep작동하지 않을 것 입니다

grep -i "`date --date='today' '+%b %e'`"/ora/n003/OSB2/WLS_OSB2-diagnostic.log | awk '{ $3=""; print}' | egrep -wi 'failed' >>  $MESSAGE

"실패"라는 문자열을 찾고 일단 발견되면 이메일을 보내야 합니다. 하지만 그렇게 하지 않습니다. 내 이메일 주소로 전송되는 특정 문자열(이 경우 로그 파일의 "FAILED" 오류 메시지)인 예상 응답을 받지 못했습니다. 이제 빈 이메일 콘텐츠가 표시됩니다.

전체 스크립트는 다음과 같습니다.

#!/bin/bash
clear

#turn on debug mode
set -x
for f in *
do
    file $f
done
#Set the variable which equal to zero

#LOG_PATH="/ora/n004/test//OSB2/WLS_OSB2-diagnostic.log"

#prev_count=0

#grep -i "failed" /ora/n004/test/OSB2/WLS_OSB2-diagnostic.log  | wc -w

grep -i "`date --date='today' '+%b %e'`"/ora/n004/test/OSB2/WLS_OSB2-diagnostic.log | awk '{ $3=""; print}' | egrep -wi 'failed' >>  $MESSAGE


#if [ "$prev_count" -lt "$count" ] ; then

# Send a mail to given email id when errors found in log

SUBJECT="WARNING: Errors found in log on "`date --date='today' '+%b %e'`""

# This is a temp file, which is created to store the email message.

MESSAGE="This is a test!!There is a timeout"

TO="[email protected]"

echo "ATTENTION: Errors are found in /ora/n004/test//OSB2/WLS_OSB2-diagnostic.log. Please Check with int team." >> $MESSAGE

echo  "Hostname: `hostname`" >> $MESSAGE

echo -e "\n" >> $MESSAGE

echo "+------------------------------------------------------------------------------------+" >> $MESSAGE

echo "Error messages in the log file as below" >> $MESSAGE

echo "+------------------------------------------------------------------------------------+" >> $MESSAGE

#grep -i "`date --date='today' '+%b %e'`"/ora/n004/test//OSB2/WLS_OSB2-diagnostic.log | awk '{ $3=""; print}' | egrep -wi 'failed' >>  $MESSAGE

mailx -s "$SUBJECT" "$TO" < $MESSAGE


#rm $MESSAGE

참고: 사용하지 않는 일부 줄을 주석 처리했습니다.

감사해요.

관련 정보