26 lines
		
	
	
	
		
			601 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
	
		
			601 B
		
	
	
	
		
			Python
		
	
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
from subprocess import check_output
 | 
						|
 | 
						|
 | 
						|
WARN_AT=80
 | 
						|
CRITICAL_AT=90
 | 
						|
output = []
 | 
						|
exitcode = 0
 | 
						|
 | 
						|
for line in check_output(['/usr/sbin/zpool', 'list', '-Hpo', 'name,size,alloc']).decode().splitlines():
 | 
						|
    pool, size, alloc = line.split('\t')
 | 
						|
    used_percent = int(int(alloc)/int(size)*100)
 | 
						|
 | 
						|
    if used_percent > CRITICAL_AT:
 | 
						|
        exitcode = max(exitcode, 2)
 | 
						|
    elif used_percent > WARN_AT:
 | 
						|
        exitcode = max(exitcode, 1)
 | 
						|
 | 
						|
    if used_percent > WARN_AT:
 | 
						|
        output.append(
 | 
						|
            f'{pool} is {used_percent}% full'
 | 
						|
        )
 | 
						|
 | 
						|
print('\n'.join(output))
 | 
						|
exit(exitcode)
 |