Linux USB Mapping Вопрос - PullRequest
       26

Linux USB Mapping Вопрос

2 голосов
/ 18 декабря 2009

Я работаю над утилитой, которая автоматически монтирует вставленную флешку в Linux. Я подключился к D-Bus, чтобы получать уведомления о том, когда устройство вставлено, и это прекрасно работает. Однако мне нужно определить, какое устройство в / dev сопоставлено с вставленной флешкой. Я получаю уведомление по шине D-Bus, а затем сканирую систему USB с помощью pyUSB (0.4). Я фильтрую классы USB_MASS_STORAGE_DEVICE и вижу устройство, которое было добавлено или удалено. Мне нужно смонтировать это устройство, чтобы я мог запросить его о доступном пространстве и сообщить об этом нашему приложению, чтобы мы могли определить, достаточно ли свободного места, чтобы мы могли записать наши данные.

Я использую python для этой задачи. Я не уверен, каким будет наш целевой дистрибутив, только то, что он будет как минимум 2,6

edit: Мой вопрос: как мне определить, какое устройство в / dev отображается на номер устройства buss, который я получаю от pyUSB.

Ответы [ 3 ]

2 голосов
/ 18 декабря 2009

Вам, наверное, стоит спросить об этом у HAL. Вы говорите, что уже получаете уведомления от HAL по D-Bus ... Он ведет список USB-устройств, вместе с их идентификаторами и именами устройств (свойство block.device).

Вот хороший пример того, как получить имя файла устройства вместе с уведомлением о новом USB-устройстве: Как я могу прослушивать события «вставлено USB-устройство» в Linux, в Python?

0 голосов
/ 18 декабря 2009

как насчет использования вывода dmesg для определения имени устройства (sdc1 и т. Д ...)

используйте его сразу после того, как dbus сообщит вам, что что-то вставлено в USB. Вы могли бы сделать tail dmesg например

0 голосов
/ 18 декабря 2009

Почему бы не использовать "os" модуль для монтирования файловой системы:

os.system ("mount ... ")

Или, если вы хотите проверить вывод, используйте «popen»:

l = op.popen ("mount ....").readlines()
...