üËö¤ÎÀ¸»à¡Ê¡©¡Ë¾õ¶·¤òÄê´üŪ¤Ë¥á¡¼¥ë¤Ç¥ì¥Ý¡¼¥È¤¹¤ë¥Ä¡¼¥ë¤Ç¤¹¡£
ping¤òÁ÷¿®¤·¤Æ¡¢È¿±þ¤¬Í¤ì¤Ðalive¡¢Ìµ¤±¤ì¤Ðdead¤È¤·¤Æ¤¤¤Þ¤¹¡£
#!/usr/local/bin/bash #---------------------------------------------------- # Computer Alive Checker (for MultiClients) # Version 0.20 # by myasu 2002 #---------------------------------------------------- #Ãí°Õ # ɬ¤ºGNU¤Î¥³¥Þ¥ó¥É¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£ # ping¤ÎÊÖÅú·ë²Ì¤¬ "... is alive" "... is dead"¤Î¤ß¤ËÂбþ¡£ # (_SEND_PING´Ø¿ô¤Î½ñ¤´¹¤¨¤¬É¬Í×) #---------------------- #½é´üÀßÄê #Æó½ÅÁ÷¿®ËÉ»ßÍѥե饰¤Î½ñ¤¹þ¤ßÀè¥Ç¥£¥ì¥¯¥È¥ê DIR_FLUG="./" #¥Á¥§¥Ã¥¯ÂоݤȤʤ륳¥ó¥Ô¥å¡¼¥¿¤Î£É£Ð¥¢¥É¥ì¥¹(ºÇ¸å¤Ëɬ¤º"null"¤òÆþ¤ì¤ë¤³¤È¡ª) LIST_IP=( \ 10.96.101.1 \ 10.96.101.2 \ 10.96.101.3 \ null ) #¥á¡¼¥ë¤ÎÁ÷¿®Àè LIST_MAIL="hoge@hogegoge" #ÊÖ¿®Àè RET_MAIL="hoge@hogegoge" #»ÈÍѤ¹¤ë¥³¥Þ¥ó¥É¤ÎÀßÄê C_NSLOOKUP="/usr/local/bin/dnsname" C_PING="/usr/sbin/ping" C_DATE="/usr/local/bin/date" C_SENDMAIL="/var/qmail/bin/qmail-inject" #C_SENDMAIL="/usr/SUNWale/bin/mailx" C_TOUCH="/usr/local/bin/touch" C_AWK="/usr/local/bin/awk" C_RM="/usr/local/bin/rm" #½ð̾ SIG_MESSAGE="ChkAlive Ver.0.2" #---------------------- #´Ø¿ô #IP¥¢¥É¥ì¥¹¤«¤é¥³¥ó¥Ô¥å¡¼¥¿Ì¾¤òÊÖ¤¹ function _IP_TO_NAME() { BUF_NAME=`eval $C_NSLOOKUP $1` return } #Ping¤òÁ÷¤Ã¤Æ¡¢¾õÂÖ¤ò³Îǧ function _SEND_PING() { #pingÁ÷¿®(¥¿¥¤¥à¥¢¥¦¥È3ÉÃ) STATE=`eval $C_PING $1 3 | $C_AWK '{print $3}'` #¤â¤· alive ¤Ê¤é 0 ¤òÊÖ¤¹ if [ $STATE = "alive" ]; then return 0 else return 1 fi } #Æó½ÅÁ÷¿®Ëɻߥե饰¤Î¾õÂÖ¥Á¥§¥Ã¥¯ function _CHK_FLUG() { #¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤ì¤Ð 0 ¤òÊÖ¤¹ if [ -f ${DIR_FLUG}flg_$1 ]; then return 0 else return 1 fi } #Æó½ÅÁ÷¿®Ëɻߥե饰¤òΩ¤Æ¤ë function _MAKE_FLUG() { $C_TOUCH ${DIR_FLUG}flg_$1 } #Æó½ÅÁ÷¿®Ëɻߥե饰¤ò¾Ã¤¹ function _DEL_FLUG() { $C_RM ${DIR_FLUG}flg_$1 } #Ää»ß¤·¤Æ¤¤¤ë»Ý¤Î¥á¡¼¥ë¤òÁ÷¿® function _SEND_REPORT_DEAD() { echo -n "Sending Mail ($1 is dead)... " #ËÜʸ¤ÎºîÀ® BUF_DATE=`eval $C_DATE` _IP_TO_NAME $1 env - $C_SENDMAIL -f${RET_MAIL} << EOF To: $LIST_MAIL From: ServerRepor <> Subject: $BUF_NAME is DEAD! $BUF_DATE $BUF_NAME ($1) is dead! --- $SIG_MESSAGE EOF echo "done" } #Éüµ¢¤·¤¿»Ý¤ò¥á¡¼¥ë¤ÇÁ÷¿® function _SEND_REPORT_ALIVE() { echo -n "Sending Mail ($1 is alive)... " #ËÜʸ¤ÎºîÀ® BUF_DATE=`eval $C_DATE` _IP_TO_NAME $1 env - $C_SENDMAIL -f${RET_MAIL} << EOF To: $LIST_MAIL From: ServerReport <> Subject: $BUF_NAME is alive. $BUF_DATE $BUF_NAME ($1) is alive, thank you! --- $SIG_MESSAGE EOF echo "" } #---------------------- #¥á¥¤¥ó½èÍý i=0 while [ ${LIST_IP[i]} != "null" ] do echo -n "Checking[${LIST_IP[i]}]..." #pingÁ÷¿® _SEND_PING ${LIST_IP[i]} if [ $? -ne 0 ]; then #dead¤Ê¤é echo "[dead] " #¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤ë¤«¥Á¥§¥Ã¥¯ _CHK_FLUG ${LIST_IP[i]} if [ $? -ne 0 ]; then #¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤Ê¤±¤ì¤Ð #Ää»ß¤·¤Æ¤¤¤ë»Ý¤ò¥á¡¼¥ë¤ÇÄÌÃÎ _SEND_REPORT_DEAD ${LIST_IP[i]} #¥Õ¥é¥°¤òΩ¤Æ¤ë _MAKE_FLUG ${LIST_IP[i]} fi else #alive¤Ê¤é echo "[alive] " #¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤ë¤«¥Á¥§¥Ã¥¯ _CHK_FLUG ${LIST_IP[i]} if [ $? -eq 0 ]; then #¥Õ¥é¥°¤¬Î©¤Ã¤Æ¤¤¤ì¤Ð #Éüµ¢¤·¤¿»Ý¤ò¥á¡¼¥ë¤ÇÄÌÃÎ _SEND_REPORT_ALIVE ${LIST_IP[i]} #¥Õ¥é¥°¤òºï½ü _DEL_FLUG ${LIST_IP[i]} fi fi #echo "done" i=$(($i+1)) done
_SEND_REPORT_ALIVE¤È_SEND_REPORT_ALIVE´Ø¿ô¤Ë¡¢¤½¤ì¤¾¤ì¥á¡¼¥ëËÜʸ¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡£
env - $C_SENDMAIL -f${RET_MAIL} << EOF To: $LIST_MAIL From: ServerRepor <> Subject: $BUF_NAME is DEAD! $BUF_DATE $BUF_NAME ($1) is dead! --- $SIG_MESSAGE EOF
$BUF_DATE¤Ï¸½ºß¤ÎÆü»þ¡¢$BUF_NAME¤ÏüËö¤Î̾Á°¡Ê¤³¤³¤Ç¤Ïdnsname¤òÍѤ¤¤ÆIP¥¢¥É¥ì¥¹¤«¤é¼«Æ°Åª¤ËµÕ°ú¤¤·¤¿Ì¾Á°¤¬Æþ¤Ã¤Æ¤¤¤Þ¤¹¡Ë¡¢$1¤Ë¤ÏIP¥¢¥É¥ì¥¹¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Å¬Åö¤ËËÜʸ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò½ñ¤´¹¤¨¤Æ¤¯¤À¤µ¤¤¡£