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
예제 #4
0
 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)
예제 #6
0
 def setUdevadm(self, udevadm, bits, udevadm_result):
     parser = UdevadmParser(udevadm, bits)
     parser.run(udevadm_result)