FreeBSD/quota警告 の変更点


*ユーザへのquota警告 [#q2a8416f]

ユーザにtelnet/SSHなどの接続を許していない場合では、何かしらでどの程度の容量を使っていて、警告時には電子メールなどでお知らせをしてあげる必要があるでしょう。 
 #!/bin/sh
 POSTMASTER=postmater
 EXECDATE=`date +%Y.%m.%d|awk '{print $0}'`
 quotafile=`/usr/sbin/repquota /usr | grep -v '\-\-' | grep grep -e days -e none -e : | \
 sort -k1 | awk '{print $1}'`
 TMPFILE1=/tmp/qalert1.$$
 TMPFILE2=/tmp/qalert2.$$
 TMPFILE3=/tmp/qalert3.$$
 
 echo "To: $POSTMASTER"
 echo "Subject: QUOTA Check Shell $EXECDATE"
 echo
 echo "--- QUOTA messenge Shell 1.0 By F.Kimura $EXECDATE ---"
 
 for linefiles in ${quotafile}
 do
 AFTERDAY=`/usr/sbin/repquota /usr | grep -v '\-\-' | grep $linefiles |awk '{print $6}'`
 echo -n $linefiles
 echo -e "\t: " $AFTERDAY
 echo "To: $linefiles" > $TMPFILE1
 echo "From: postmaster@example.jp" >> $TMPFILE1
 echo "X-Comment: EXAMPLE Warning mail" >> $TMPFILE1
 echo "Reply-To: support@example.jp" >> $TMPFILE1
 echo "Subject: [SUPPORT] Alert Messages From Administrator" >> $TMPFILE1
 cat /tmp/qalert1.$$ > /tmp/qalert2.$$
 sed -e 's!%%SENDDATE%%!'$EXECDATE'!g' \
 -e 's!%%AFTERDAY%%!'$AFTERDAY'!g' \
 /etc/QUOTA.Messages >> /tmp/qalert2.$$
 /usr/local/bin/nkf -ej /tmp/qalert2.$$ > /tmp/qalert3.$$
 /usr/sbin/sendmail $linefiles < $TMPFILE3
 rm $TMPFILE1 $TMPFILE2 rm $TMPFILE3
 done
 
 echo '------------------------------------------------------'
 
 exit 0 
なんか無理矢理だけどやりたいイメージはこんな感じ。/etc/QUOTA.Messages というファイルをEUCで作ったメッセージ文章としておけば、後はcrontabで日に1回以上動かしてあげれば、自動的に配信される(予定)です。 
 -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
 サービスご利用の皆様へ      【ディスク利用制限超過のお知らせ】
 
 いつもサービスをご利用いただきありがとうございます。
 
 さて、貴殿に割り当てているサーバ上のディスク容量が既に契約値を超
 えた状態となっており %%AFTERDAY%% 以内に制限値以下にしていただ
 けなかった場合には、電子メールなどの受信ができなくなりますのでご
 注意ください。
 
 契約量の変更やディスク上のファイルの削除方法にお聞きになりたい場
 合には会員サポートまでお問い合わせください。
 
 
 TO Custmers
 FROM your service Administrator:
 
 Grace Time: %%AFTERDAY%%
 
 Your mailbox on the server is now more than "Soft Limits". 
 So that you can continue to receive mail you need to remove
 some messages from your mailbox.
 
 %%SENDDATE%%
 _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ 
イメージはこんな感じですので適当に文章等は作成してください。
 サポートを行うこちら側に、誰にメールをしたのかを把握しておきたい気持ちはあるので、こんなのも。
サポートを行うこちら側に、誰にメールをしたのかを把握しておきたい気持ちはあるので、こんなのも。
後半部分は不要かも。/homeが溢れちゃって、/varにたまっている場合の量を見るために加えただけなので。
以下は実行のための一例です。お好きな形で行ってくれればいいです。

 [/etc/crontab]
 
 #minute hour mday month wday who command
 05 17 * * * root /bin/sh /etc/quota/quota_check.sh 2>&1 /dev/null | /usr/sbin/sendmail postmaster 

 [quota_check.sh]
 #!/bin/sh
 POSTMASTER=postmaster
 EXECDATE=`date +%Y.%m.%d|awk '{print $0}'`
 
 echo "To: $POSTMASTER"
 echo "Subject: QUOTA Check Shell $EXECDATE"
 echo
 echo "--- QUOTA Check Shell 1.0 By F.Kimura $EXECDATE ---"
 
 /usr/sbin/repquota /usr/home | grep -v '\-\-'
 
 echo
 echo "--- /var/mail file exist User List"
 ls -la /var/mail | awk '{print $3 " " $5}' | grep -v " 0" | grep -v ^"root " | grep -v ^"foo "
 echo
 
 echo '------------------------------------------------------'