--- lsdrv 2011-05-26 11:06:44.000000000 +0200 +++ lsdrv.py 2011-05-26 11:34:50.000000000 +0200 @@ -47,7 +47,12 @@ def runx(*args, **kwargs): kwargs['stdout'] = PIPE kwargs['stderr'] = PIPE - sub = Popen(*args, **kwargs) + try: + sub = Popen(*args, **kwargs) + except OSError as e: + print "Unable to execute " + str(args[0][0]) + print e + exit() out, err = sub.communicate() return out @@ -166,9 +171,12 @@ devpath = os.path.realpath(devpathlink) if devpath in phydevs: return phydevs[devpath] - phy = Struct(dpath=devpath, node=nodestr, - vendor=io.FileIO(devpath+'/vendor').read().split("\n",1)[0].strip(), - model=io.FileIO(devpath+'/model').read().split("\n",1)[0].strip()) + try: + phy = Struct(dpath=devpath, node=nodestr, + vendor=io.FileIO(devpath+'/vendor').read().split("\n",1)[0].strip(), + model=io.FileIO(devpath+'/model').read().split("\n",1)[0].strip()) + except IOError: + return None if os.path.exists(devpath+'/unique_id'): phy.serial = io.FileIO(devpath+'/unique_id').read().split("\n",1)[0].strip() if not phy.serial: @@ -189,6 +197,8 @@ blockbyname=dict() blockbynode=dict() sysclassblock="/sys/class/block/" +if(not os.path.exists(sysclassblock)): + sysclassblock = "/sys/block/" for x in os.listdir(sysclassblock): nodestr=io.FileIO(sysclassblock+x+'/dev').read().split("\n")[0] sizestr=sect2size(io.FileIO(sysclassblock+x+'/size').read().split("\n")[0]) @@ -250,7 +260,10 @@ devstat = os.stat(mdev) nodestr="%d:%d" % (os.major(devstat.st_rdev), os.minor(devstat.st_rdev)) if nodestr in blockbynode: - mntstat = os.statvfs(mnt) + try: + mntstat = os.statvfs(mnt) + except OSError: + mntstat = None dev = blockbynode[nodestr] dev.mountdev = mdev dev.mountpoint = mnt