쉘스크립 수정 질문좀
#!/usr/bin/env bash
#set -x
# Description : OVERTEMP Alarm Script.
# Ver : 0.1v
# Date : 20170516
BELL='tput bel'
ERRMSG='(OVER|checkpoint)'
PRINTMSG=" Error !!!!"
DestFile='/var/adm/syslog/syslog.log'
BellLIMIT=10
## Define Functions
BELL() {
for (( a=0; a < BellLIMIT ; a++ )); do
echo -e "\n\t\t $(date) $PRINTMSG"
tput bel
sleep 1
done
}
# Main
while :;
do
tail -1 $DestFile | egrep -q "$ERRMSG"
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
BELL
fi
sleep 0.1
done
------------------------------------------------
출처 : https://kldp.org/node/111218
------------------------------------------------
위 내용은 출처 내용에서 제가 사용해 연습하기 위해서 조금 경로만 수정한 스크립입니다
해당 목적은 OVERTEMP <--- 이 특정로그가 찍히면 로그를 생성하여 그 로그를 모니터링 하려구 했습니다
여러대를 다 못보니 스크립에서 로그를 만들어서 하려구 했으니 능력이 부족한지 저 스크립을 이해가 안되는지 수정이 안됩니다 다른 검색을 해서 넣어봤는데. 저 스크립에 모니터링만됩니다.
로그가 안만들어지더군여;;
혹시 해당 스크립 수정해서 OVER.log (/home) 쪽으로 생성하게 해줄수 없을까여;
음
하시려는게 정확히 뭔지 잘 모르겠지만 일단 적합해보이지 않는군요. /var/adm/syslog/syslog.log 에는 sleep 0.1 초 내에 2 개 이상의 메시지는 발생할 수 없다는 전제도 필요하고요.
차라리 이해한게 맞다면 그냥 아래처럼 한줄로만 해도 될 것 같습니다.
소곤소곤
음 ..
-q 가 아니라 --line-buffered 옵션이 들어가야 할 것 같습니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
아.. 원문 내용 조합해서 만들다보니 그렇게 되었네요
아.. 원문 내용 조합해서 만들다보니 그렇게 되었네요. 말씀하신 내용이 맞습니다.
소곤소곤
일단 목표는 서버운영중 OVERTEMP <-- 메세지
일단 목표는 서버운영중 OVERTEMP <-- 메세지 나오면 로그을 생성해서 /home에 log_OVER.log 로 생성되어 저장함.
음 ..
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
일떄문에 늦게 봤네요 감사합니다 .그대..
근대 죄송하지만 위내용으로 해봤지만
ast_line_end 변수 값이랑 , curr_line_end 변수 값이 동일함..
last_line_end=$(wc -l $log_file | awk '{print $1}')
curr_line_end=$(wc -l $log_file | awk '{print $1}')
if [ $line_diff -gt 0 ] 비교값은 계속 0일테니.. 로그 생성 안될듯...
last_line_end 기준값 설정을 새로 해야 할듯...
이 부분이 수정이 안되네요 아에? find
LOG_DIR='/var/adm/syslog'
LOG_FILE="syslog.log"
RES="OVER"
find $LOG_DIR -name $LOG_FILE |xargs grep -n $RES
넣어봐서 해봤지만 안되고여;; 혹시 다시 수정가능할까여;
음 ..
저 위에 있는 tail -F ... 한 줄이면 간단히 되는 내용입니다.
스크립트에서.. 첫번째 루프에서는 두 변수의 값이 같지만..
sleep 하는 동안에 로그가 발생한다면 그 다음 루프에서는 발생한 갯수만큼 차이가 나겠죠..?
어차피 로그가 rotate 되는 경우에 대한 처리도 고려해야 되는 상황이니..
스크립트 공부 목적이 아니시라면, 스크립트보다는 간단히 위 명령으로 처리하시는게 나아보입니다.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기