- Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
#contents
*¤Ï¤¸¤á¤Ë [#m82bad32]
üËö¤ÎÀ¸»à¡Ê¡©¡Ë¾õ¶·¤òÄê´üŪ¤Ë¥á¡¼¥ë¤Ç¥ì¥Ý¡¼¥È¤¹¤ë¥Ä¡¼¥ë¤Ç¤¹¡£~
ping¤òÁ÷¿®¤·¤Æ¡¢È¿±þ¤¬Í¤ì¤Ðalive¡¢Ìµ¤±¤ì¤Ðdead¤È¤·¤Æ¤¤¤Þ¤¹¡£
*¥½¡¼¥¹¥³¡¼¥É [#u599fd7b]
#!/usr/local/bin/bash
#----------------------------------------------------
# Computer Alive Checker (for MultiClients)
# Version 0.20
# by y.miyake 2002
# 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: ServerReport@hogehoge <>
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
# 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 <>
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
i=$(($i+1))
done
*ÀâÌÀ [#ga197188]
**ÀßÄê²Õ½ê [#sd65029e]
-''LIST_IP''¤Ë¡¢´Æ»ë¤¹¤ëüËö¤ÎIP¥¢¥É¥ì¥¹¤òÎóµó¤·¤Þ¤¹¡£
-''LIST_MAIL''¤Ë¡¢¥ì¥Ý¡¼¥È¤ÎÁ÷¿®À襢¥É¥ì¥¹¤ò»ØÄꤷ¤Þ¤¹¡£
-''RET_MAIL''¤Ë¡¢ÊÖ¿®À襢¥É¥ì¥¹¤ò»ØÄꤷ¤Þ¤¹¡£ÊÖ¿®¤·¤Æ¤âÆ°ºî¤ËÁ´¤¯±Æ¶Áͤê¤Þ¤»¤ó¡£
RIGHT:&now()
**ÀßÄê²Õ½ê¡Ê¥ì¥Ý¡¼¥ÈÆâÍÆ¡Ë [#b33b9493]
''_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¥¢¥É¥ì¥¹¤¬³ÊǼ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢Å¬Åö¤ËËÜʸ¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò½ñ¤´¹¤¨¤Æ¤¯¤À¤µ¤¤¡£
RIGHT:2008-09-14 (Æü) 09:30:31
----
[[Solaris Administrator]]