Как использовать udev для поиска информации о вставленных видео носителях (например, DVD) - PullRequest
3 голосов
/ 19 мая 2010

Я пытаюсь портировать приложение с использованием HAL на использование чистого udev. Он написан на python и будет использовать библиотеку gudev, хотя я хотел бы увидеть примеры на любом языке. Я могу получить все подключенные видеоустройства (например, камеры) через:

import gudev

client = gudev.Client(["video4linux"])
for device in client.get_devices():
    print device.get_sysfs_attr("name"), device.get_device_name()

Это печатает что-то вроде:

USB2.0 UVC WebCam /dev/video0

Я также могу получить список блочных устройств, но как я могу:

  1. Скажите, если это CD / DVD привод?

  2. Скажите, вставлен ли носитель в данный момент, поддерживает ли накопитель съемный носитель?

  3. Скажите, как называется / обозначается носитель (например, FUTURAMAS1 для DVD)?

Исходный код, который я пытаюсь перенести, находится по адресу http://github.com/danielgtaylor/arista/blob/045a4d48ebfda44bc5d0609618ff795604ee134f/arista/inputs.py

Любая помощь будет принята с благодарностью!

<Ч />

Обновление: добавление ответа ниже.

import gudev

client = gudev.Client(['block'])
for device in client.query_by_subsystem("block"):
    if device.has_property("ID_CDROM"):
        print "Found CD/DVD drive at %s" % device.get_device_file()
        if device.has_property("ID_FS_LABEL"):
            print "Found disc: %s" % device.get_property("ID_FS_LABEL")
        elif device.has_property("ID_FS_TYPE"):
            print "Found disc"
        else:
            print "No disc"

Приведенный выше код выведет данные вроде:

Found CD/DVD drive at /dev/sr0
Found disc: Ubuntu_10.04_i386

Спасибо за помощь!

1 Ответ

3 голосов
/ 19 мая 2010

Взгляните на свойства устройства:

import gudev

client = gudev.Client(['block'])
for device in client.query_by_subsystem("block"):
    print device
    for device_key in device.get_property_keys():
        print "   property %s: %s" % (device_key, device.get_property(device_key))
    print
...