#!/usr/bin/python2 # import os for statvfs import os # reading a file def fileparser(path): file = open(path, "r") result = file.read() file.close() return result #file = open("/proc/partitions", "r") #parts = file.read() #file.close() #file = open("/proc/mounts", "r") #mounts = file.read() #file.close() # reading needed files parts = fileparser("/proc/partitions") mounts = fileparser("/proc/mounts") #bug.. what if uuids are in /proc/mounts partitions = [] blocks = [] # getting all local partitions (regardless if mounted or not) # and blocks from /proc/partitions and write it to lists for line in parts.split("\n"): if line and "name" not in line and "sr0" not in line: if line.split()[2] != "1": partitions.append("/dev/" + line.split()[3]) blocks.append(line.split()[2]) hold="nothing" holdblocks = 0 blockcount = 0 counter = 0 partsnew = [] blocksnew = [] # detect disk like /dev/sda itself and # filter it from partitions and blocks list for part in partitions: if hold in part: blockcount = blockcount + int(blocks[counter]) partsnew.append(part) blocksnew.append(blocks[counter]) else: hold = part holdblocks = blocks[counter] blockcount = 0 counter += 1 # moving back to old var name # too lazy to rename everything below partitions = partsnew blocks = blocksnew # getting mounted partitions and their mountpoints mountpoints = [] mountparts = [] for item in partitions: for line in mounts.split("\n"): if line and item in line: mountpoints.append(line.split()[1]) mountparts.append(item) break # output for debugging print "debug output:" print "availible partitions: %s\nblocks: %s\nmounted partitions: %s\nmountpoints: %s" %(partitions, blocks, mountparts, mountpoints) print "" #linebreak # given paths(mountpoints) #path=("/boot", "/", "/dev/sda6") path = mountpoints print "mountpoints\tfree megabytes" print "------------------------------" # getting usage information and print it to stdout for mountpoint in path: #check if given path is a mountpoint if os.path.ismount(mountpoint): #create statvfs object fs = os.statvfs(mountpoint) #calculate free megabytes freembytes = fs.f_bavail * fs.f_bsize / 1024**2.0 #output print "%s\t\t%.1f MB" %(mountpoint, freembytes) else: print "error: given path (%s) is not a mountpoint" %(mountpoint) # end of file