LoginSignup
1
0

More than 5 years have passed since last update.

ホームディレクトリの監視を行ってユーザー毎の使用量を警告する

Last updated at Posted at 2018-10-10

ほっとくと好きなように使われるので定期的に警告を行う

今までの経緯から整理整頓が苦手な人たちのために、ユーザー毎にホームディレクトリ(/home/xxxxx)の容量をチェックするshellを作成しました。
定期的にcrontabで実行して、ログファイルをメールで通知する予定です。

業務的な都合上以下の処理を追加しています。
- GROUPIDを100に制限しています。
- 100MB以下は表示しません。
- /usr/local/bin/username.shでpasswdファイルのコメントを付け込んでいます。

homedir_chk.sh
set -eu
logdir=/logs/
shname=`basename $0 ".sh"`
alert_size=100000       #閾値(KB単位) 10000=100MB
# ユーザーの一覧を取得する(GROUPID=100のみ)
userlst=(`grep :100: /etc/passwd|awk 'BEGIN { FS = ":" } /home/ {print $1}'`)

for userid in ${userlst[@]}; do
        du -sk /home/$userid |\
        awk -v "par=${alert_size}" '/home/ {if ($1 > par) {printf "%10s %9.2f MB\n",$2,$1/1024}}' |\
        /usr/local/bin/username.sh >> ${logdir}${shname}.log
done

exit $?
username.sh
read_line=`cat -`
computer=`hostname`
hiduke=`date +"%Y%m%d_%H%M%S"`

# 入力データ(標準入力)が空のときexitする。
### if test -z ${read_line} ; then
if [[ -z ${read_line} ]] ; then
   exit 0
fi

# ユーザー名を取得する(/etc/passwd)
usernm=`echo ${read_line} |\
    cut -b 7-13 |\
    xargs -I{} grep {} /etc/passwd|awk 'BEGIN{FS=":"}{print $5"("$1")"}'`

echo -e "${computer} : ${hiduke} : 各自 ホームディレクトリを整理してください。 ${read_line} : ${usernm}"

exit $?

ログの出方はこんな感じです。
[i999999@HOSTNAME ~]$ cat homedir_chk.log
HOSTNAME : 20181010_182122 : 各自 ホームディレクトリを整理してください。 /home/i123456 184.02 MB : Yamada Taro/Qiita(i123456)

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0