#!/bin/bash
PINGHOST="主機IP"
HOSTNAME="客戶名"
NOWTIME=$(date +’%Y%m%d-%H:%M:%S’)
GOODMSG=("$HOSTNAME主機_$PINGHOST-於$NOWTIME-恢復正常")
ERRORMSG=("$HOSTNAME主機_$PINGHOST-於$NOWTIME-發生故障")
TERRORMSG="/etc/sh/terrormsg.sh"
DAY=1
HOURS=8h
SEC=60s
# 正常:0 不正常:1
KEYOK=0
#虛擬機開機準備
sleep 90s
echo -e "預設 KEYOK=$KEYOK 正常\n"
while true
do
if [ $KEYOK == 1 ]
then
#進入第2迴圈,除非正常才會跳出到第一迴圈
while true
do
echo "login 2 while"
sleep $SEC
NOWTIME=$(date +’%Y%m%d-%H:%M:%S’)
GOODMSG=("$HOSTNAME主機_$PINGHOST-於$NOWTIME-恢復正常")
#ping $PINGHOST -c 1 >>/dev/null && echo "2 ok" || $TERRORMSG $GOODMSG
sleep 1s
ping $PINGHOST -c 1 >>/dev/null && KEYOK=0 || KEYOK=1
if [ $KEYOK == 0 ]
then
echo "logout 2 "
$TERRORMSG $GOODMSG
echo "$GOODMSG" >>/tmp/psave.log
break
fi
done
else
NOWTIME=$(date +’%Y%m%d-%H:%M:%S’)
ERRORMSG=("$HOSTNAME主機_$PINGHOST-於$NOWTIME-發生故障")
#ping $PINGHOST -c 1 >>/dev/null && echo "ok" || $TERRORMSG $ERRORMSG
sleep 1s
ping $PINGHOST -c 1 >>/dev/null && KEYOK=0 || KEYOK=1
if [ $KEYOK == 1 ]
then
echo "ping $PINGHOST error"
echo "$ERRORMSG" >>/tmp/psave.log
$TERRORMSG $ERRORMSG
fi
sleep $SEC
fi
done
或參考
https://github.com/dmitriypavlov/pve-watchdog/blob/master/watchdog.sh