[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[postfix-jp: 2548] Re: LDAP サーバ障害時の対策
- Subject: [postfix-jp: 2548] Re: LDAP サーバ障害時の対策
- From: matumoto@xxxxxxxxxxxxxxxxxxxxxx (Ryuji Matsumoto)
- Date: Mon, 19 Mar 2007 16:00:50 +0900 (JST)
松元です。
らむじぃ様、神戸様:
In article <20070319122040.783E.RAMSY@xxxxxxxx>
>> このロジックじゃダメでしょ。
>> 全然lockになってない。
>>
>> 多重起動したときに
>> > if [ ! -f /var/lock/subsys/check-ldap ]; then
>> と
>> > touch /var/lock/subsys/check-ldap
>> の間で入れ違いになってlock作られても検出できませんよ?
>> (touchは、既存ファイルがあってもエラーになりません)
>>
>> shell scriptでやるならsymlinkを貼るという1行為を使うべきでしょう。
ありがとうございます。symlinkを使ったlockについては技術的文献を探しま
したが、良い物がなかったため、他のスクリプトの見よう見まねで作ってみま
した。問題があれば指摘ください。
------------------------------------
rootのcrontabあたりに仕込んでください。
3-59/5 * * * * /usr/local/sbin/check-ldap.sh
------------------------------------
#!/bin/sh
HOME=/
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
export HOME PATH
#
# getent passwd の返り値の閾値。ユーザ数が指定した数(行数)以下になる
# とエラーにする。数値は環境に合わせて適切に。
#
GETENT_LIMIT=500
#DEBUG
#GETENT_LIMIT=600
#
# Ref: http://www.postfix-jp.info/ML/arc-2.3/msg00456.html
# * Subject: [postfix-jp: 2457] Re: LDAP サーバ障害時の対策
#
# 存在するか調査するID。
#
CHECK_USERS="user1 user2 user3"
#DEBUG
#CHECK_USERS="hogehoge guestguest"
LOCKFILE="/var/lock/subsys/check-ldap"
#############################
stop_postfix () {
/etc/rc.d/init.d/postfix stop
}
rm_lock ()
{
#
# Symlinkなら削除(本来なら-Lだけで十分だが、念のため-fでもテストする)
#
if [ -L ${LOCKFILE} -o -f ${LOCKFILE} ]; then
rm -f ${LOCKFILE}
fi
}
check_id_postfix () {
/usr/bin/id $1 > /dev/null 2>&1
RETVAL=$?
if [ ${RETVAL} -ne 0 ]; then
stop_postfix
echo "ERROR: May Be down LDAP. Dose not exist " $1
rm_lock
exit
fi
}
#############################
#
# 二重起動のチェック
#
ln -s /dummy_lock_file ${LOCKFILE} > /dev/null 2>&1
RETVAL=$?
if [ ${RETVAL} -ne 0 ]; then
echo "ERROR: Can not create lock file"
exit
fi
#sleep 1
#
# ${CHECK_USERS}で指定したIDが存在するかをテストする。
#
for N in ${CHECK_USERS} ; do
check_id_postfix $N
done
#
# getent passwd の返り値のテスト。行数が想定数より
# 少ないとエラー
#
PASSWD_C=`/usr/bin/getent passwd | wc -l `
if [ ${PASSWD_C} -lt ${GETENT_LIMIT} ]; then
stop_postfix
echo "ERROR: May Be down LDAP. Very few user :" ${PASSWD_C};
rm_lock
exit
fi
#
rm_lock
exit;
# EOF
--
松元隆二
_______________________________________________
Postfix-jp-list mailing list
Postfix-jp-list@xxxxxxxxxxxxxxxxxxxx
http://lists.sourceforge.jp/mailman/listinfo/postfix-jp-list
- References
-
- [postfix-jp: 2546] Re: LDAP サーバ障害時の対策, YOSHIMURA Keitaro
[検索ページ]
[Postfix-JP ML Home]