#!/usr/bin/python # # scan system for harddrives and output device name/size # # Copyright (C) 2007, 2009 Red Hat, Inc. All rights reserved. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import dbus import sys HAL_INTERFACE = "org.freedesktop.Hal" HAL_MANAGER_PATH = "/org/freedesktop/Hal/Manager" HAL_MANAGER_INTERFACE = "org.freedesktop.Hal.Manager" HAL_DEVICE_INTERFACE = "org.freedesktop.Hal.Device" def main(argv): lst = set() try: bus = dbus.SystemBus() hal = dbus.Interface(bus.get_object(HAL_INTERFACE, HAL_MANAGER_PATH), HAL_MANAGER_INTERFACE) except: sys.exit(1) for udi in hal.FindDeviceByCapability("volume"): try: haldev = dbus.Interface(bus.get_object(HAL_INTERFACE, udi), HAL_DEVICE_INTERFACE) props = haldev.GetAllProperties() except dbus.exceptions.DBusException: continue if not props.has_key('volume.size'): continue size = str(props['volume.size'] / (1024 * 1024)) if props.has_key('block.device'): devnode = props['block.device'].encode('utf-8') elif props.has_key('linux.device_file'): devnode = props['linux.device_file'].encode('utf-8') lst.add("%s %s" % (devnode, size,)) lst = list(lst) lst.sort() for entry in lst: print entry if __name__ == "__main__": main(sys.argv)