#!/bin/bash
ip_list=( #여기엔 관리하고 싶은 아이피를 넣는다
#192.168.4.4
)
mail_name(){ #매일 보낼 내용을 변수로 저장함 함수로 둔 이유는 확장성 용의
변수1=`echo "system or network is down, check your server" | mail -s "$node server is down" 내아이디@도메인.com`
변수2=`echo "system or network is down, check your server" | mail -s "$node server is down" 내아이디@도메인.com`
}
mail_send(){ #케이스 문을통해서 원하는 서버가 꺼지면 필요한 사람들에게 메일전송 되도록 변수 입력
echo "in"
case $node in
#192.168.4.4)
변수1
변수2
;;
*)
변수1
;;
esac
}
ping_test(){
for node in ${ip_list[@]}
do
ping -c 1 -W 1 "$node" > /dev/null
if [ $? -eq 0 ]; then
#echo "$node OK"
echo "pass" > /tmp/ping_test/$node
else
#echo "$node fail"
echo "fail" >> /tmp/ping_test/$node
fail_num=`cat /tmp/ping_test/$node |wc -l`
if [ $fail_num -eq "10" ]; then
mail_name
mail_send
fi
fi
done
}
#main
while :
do
ping_test
sleep 5;
done
---------------------------------
동작설명 :
5초마다
/tmp/ping_test 라는 폴더에 통과값과 실패 값을 저장
실패 값이 10번 이상이면
매일을 딱 한번만 전송한다 <<
----------------------------------
실행시
[root@대충이름]# bash 스크립트이름.sh &
로 실행하면 따로 모니터링 할 필요도 없고 편함
정말 고민 많이했던건 ping이 어쩔땐 오고 어쩔땐 안오고
또 계속 메일이 날라온다던가 이런 자잘한 이슈들을 전부 해결했음
완벽한 프로그램은 없다시피 그냥 편하게 굴러가게 만들어둠
함수로 만들었기 때문에 확정성이 용의함
VSZ와 RSS도 각각 18992 724 밖에 안되서 상당히 가벼움 저장용량도
얼마 안들고 모니터링도 쉽다
[root@대충이름]# cat /tmp/ping_test/*
pass
pass
pass
pass
pass
pass
fail
pass
pass
대충 저기다가 watch -n 5 '' 로 하면 됨
누군가 이런일 때문에
시간낭비하는 걸 막고자 글 작성함
'쉘 스크립' 카테고리의 다른 글
[눈꼽팁]awk 를 이용한 for문 효과 ?! (0) | 2021.06.17 |
---|---|
서버의 간단한 스펙 확인 (0) | 2020.08.29 |
서버의 스펙을 기록하는 스크립트 (0) | 2020.08.29 |