FreeBSD/quota警告
ユーザへのquota警告 †
ユーザに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 '------------------------------------------------------'