def __init__(self, categories): self.categories = categories self.names = [] cmd = 'udevadm info --export-db' output = sp.check_output(cmd, shell=True).decode(sys.stdout.encoding) udev = UdevadmParser(output) udev.run(self)
def _collect_devices(self): cmd = ['udevadm', 'info', '--export-db'] try: output = check_output(cmd).decode(sys.stdout.encoding) except CalledProcessError as err: sys.stderr.write(err) return udev = UdevadmParser(output) udev.run(self)
def get_touch_attributes(): output, err = Popen(COMMAND, stdout=PIPE, shell=True).communicate() if err: print("Error running $s" % ' '.join(COMMAND)) print(err) return None udev = UdevadmParser(StringIO(output.decode("unicode-escape"))) result = TouchResult() udev.run(result) return result.attributes
def getParser(self, string): stream = StringIO(string) return UdevadmParser(stream)
def main(): parser = argparse.ArgumentParser() parser.add_argument("-c", "--command", action='store', type=str, default="udevadm info --export-db", help="""Command to execute to get udevadm information. Only change it if you know what you're doing.""") parser.add_argument("-d", "--lsblkcommand", action='store', type=str, default="lsblk -i -n -P -o KNAME,TYPE,MOUNTPOINT", help="""Command to execute to get lsblk information. Only change it if you know what you're doing.""") parser.add_argument('-l', '--list', nargs='+', choices=categories, metavar=("CATEGORY"), default=(), help="""List devices found under the requested categories. Acceptable categories to list are: {}""".format(', '.join(categories))) parser.add_argument('-f', '--filter', nargs='+', choices=categories, metavar=("CATEGORY"), default=(), help="""Filter devices found under the requested categories. Acceptable categories to list are: {}""".format(', '.join(categories))) parser.add_argument('-s', '--short', action='store_true') args = parser.parse_args() try: output = check_output(shlex.split(args.command)) lsblk = check_output(shlex.split(args.lsblkcommand)) except CalledProcessError as exc: raise SystemExit(exc) # Set the error policy to 'ignore' in order to let tests depending on this # resource to properly match udev properties output = output.decode("UTF-8", errors='ignore') lsblk = lsblk.decode("UTF-8", errors='ignore') list_partitions = False if 'PARTITION' in args.list or 'PARTITION' in args.filter: list_partitions = True udev = UdevadmParser(output, lsblk=lsblk, list_partitions=list_partitions) if args.list: result = UdevResultLister(args.list) udev.run(result) return result.display(args.short) elif args.filter: result = UdevResultLister(args.filter) udev.run(result) return result.filter() else: result = UdevResultDump() udev.run(result)
def setUdevadm(self, udevadm, bits, udevadm_result): parser = UdevadmParser(udevadm, bits) parser.run(udevadm_result)