Top/Server/Tools/chkalive

¤Ï¤¸¤á¤Ë

üËö¤ÎÀ¸»à¡Ê¡©¡Ë¾õ¶·¤òÄê´üŪ¤Ë¥á¡¼¥ë¤Ç¥ì¥Ý¡¼¥È¤¹¤ë¥Ä¡¼¥ë¤Ç¤¹¡£
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
 

ÀâÌÀ

ÀßÄê²Õ½ê

  • LIST_IP¤Ë¡¢´Æ»ë¤¹¤ëüËö¤ÎIP¥¢¥É¥ì¥¹¤òÎóµó¤·¤Þ¤¹¡£
  • LIST_MAIL¤Ë¡¢¥ì¥Ý¡¼¥È¤ÎÁ÷¿®À襢¥É¥ì¥¹¤ò»ØÄꤷ¤Þ¤¹¡£
  • RET_MAIL¤Ë¡¢ÊÖ¿®À襢¥É¥ì¥¹¤ò»ØÄꤷ¤Þ¤¹¡£ÊÖ¿®¤·¤Æ¤âÆ°ºî¤ËÁ´¤¯±Æ¶ÁÍ­¤ê¤Þ¤»¤ó¡£

ÀßÄê²Õ½ê¡Ê¥ì¥Ý¡¼¥ÈÆâÍÆ¡Ë

_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¥¢¥É¥ì¥¹¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Å¬Åö¤ËËÜʸ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò½ñ¤­´¹¤¨¤Æ¤¯¤À¤µ¤¤¡£

2008-09-14 (Æü) 09:30:31

Solaris Administrator


¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ÍúÎò źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2008-09-14 (Æü) 09:31:17