¤Ï¤¸¤á¤Ë

¥½¡¼¥¹¥³¡¼¥É

#!/usr/local/bin/bash

#----------------------------------------------------
#  Computer Alive Checker (for MultiClients)
#  Version 0.20
#  by y.miyake 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: ServerReport@hogehoge <>
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

#	echo $BUF_DATE $BUF_NAME
#	echo ${LIST_MAIL}
#   return

#env - $C_SENDMAIL -r${RET_MAIL} -t << EOF

	env - $C_SENDMAIL -f${RET_MAIL} << EOF
To: $LIST_MAIL
From: ServerReport@hogehoge <>
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
  i=$(($i+1))
done
 

ÀâÌÀ

&now()

Solaris Administrator

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS