#!/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()