-
Notifications
You must be signed in to change notification settings - Fork 34
/
Copy pathdf
executable file
·42 lines (34 loc) · 1.22 KB
/
df
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
max_space=90
max_inodes=85
skip_fstypes=( fuse.sshfs squashfs )
skip_mps=( )
err=
df_bb= df_cmd=$(readlink -f $(command -pv df))
[[ "${df_cmd##*/}" = busybox ]] && df_bb=t df_cmd='df -hT' || \
df_cmd='df -h --output=target,pcent,ipcent,fstype,used,size'
while read mp perc_space perc_inodes fstype used size tail; do
[[ "$mp" = Mounted || "$mp" = Filesystem ]] && continue
[[ -z "$df_bb" ]] || {
mp=$tail used=$fstype fstype=$perc_space
perc_space=$size size=$perc_inodes perc_inodes=0; }
skip=
for fstype_chk in "${skip_fstypes[@]}"
do [[ "$fstype" = "$fstype_chk" ]] && { skip=t; break; }
done
for mp_chk in "${skip_mps[@]}"
do eval "[[ \$mp =~ $skip_mps ]] && { skip=t; break; }"
done
[[ -n "$skip" ]] && continue
perc_space=${perc_space%\%}
perc_inodes=${perc_inodes%\%}
warn=
[[ -n "$max_space" && "$perc_space" != -
&& "$perc_space" -gt "$max_space" ]] && warn=t
[[ -n "$max_inodes" && "$perc_inodes" != -
&& "$perc_inodes" -gt "$max_inodes" ]] && warn=t
[[ -n "$warn" ]] && {
err=t; echo >&2 "WARNING: mountpoint is over space/inodes threshold"\
"($perc_space/$max_space:$perc_inodes/$max_inodes) - $mp ($fstype, $used/$size)"; }
done < <(LANG=C $df_cmd)
[[ -n "$err" ]] && exit 1 || exit 0