import plistlib import subprocess factoid = "drive_medium" def fact(): """Returns the boot drive medium""" result = "None" try: proc = subprocess.Popen( ["/usr/sbin/diskutil", "info", "-plist", "/"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, ) stdout, _ = proc.communicate() except (IOError, OSError): stdout = None if stdout: d = plistlib.readPlistFromString(stdout.strip()) if d.get("CoreStorageCompositeDisk", False): result = "fusion" elif d.get("RAIDMaster", False): result = "raid" else: result = "ssd" if d.get("SolidState", False) else "rotational" return {factoid: result} if __name__ == "__main__": print("<result>%s</result>" % fact()[factoid])