55 lines
1.1 KiB
Text
55 lines
1.1 KiB
Text
|
#!/usr/bin/env python
|
||
|
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
CRIT = 90.0
|
||
|
MOUNT_BLACKLIST = ['/dev', '/efi', '/proc', '/run', '/sys', '/tmp']
|
||
|
|
||
|
|
||
|
def main():
|
||
|
output = subprocess.check_output([
|
||
|
'sh', '-c', 'df -a -B 1 | awk \'{ printf "%s\\t%d\\t%d\\n", $6, $2, $4 }\''
|
||
|
]).decode('utf-8')
|
||
|
|
||
|
fs = {}
|
||
|
for line in output.split('\n'):
|
||
|
if len(line) == 0 or line[0] != '/':
|
||
|
continue
|
||
|
(mountpoint, total, available) = line.split('\t')
|
||
|
fs[mountpoint] = (total, available)
|
||
|
|
||
|
color = ''
|
||
|
|
||
|
strings = []
|
||
|
for mount, data in fs.items():
|
||
|
skip = False
|
||
|
for b in MOUNT_BLACKLIST:
|
||
|
if mount.startswith(b):
|
||
|
skip = True
|
||
|
|
||
|
if skip:
|
||
|
continue
|
||
|
|
||
|
usage = 0.0
|
||
|
if float(data[0]) > 0.0:
|
||
|
usage = (1 - float(data[1])/float(data[0])) * 100.0
|
||
|
|
||
|
strings.append('{}: {:.0f}%'.format(
|
||
|
mount,
|
||
|
usage,
|
||
|
))
|
||
|
|
||
|
if usage > CRIT:
|
||
|
color = '#dd0000'
|
||
|
|
||
|
print('\ufaed '+'\n'.join([
|
||
|
' '.join(strings),
|
||
|
' '.join(strings),
|
||
|
color,
|
||
|
]))
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|