2009-12-17 3 views
2

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

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

Редактировать: Мой вопрос: Как определить, какое устройство в/dev сопоставляется с номером абонентского устройства, которое я получаю от pyUSB ,

+0

Как вы заменить встроенный Linux операцию, которая имеет место, когда USB палку вставляется крепление? –

ответ

2

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

Вот хороший пример того, как получить имя файла устройства вместе с уведомлением о новом USB-устройства: How can I listen for 'usb device inserted' events in Linux, in Python?

+0

Отлично. Именно то, что я искал. Благодарю. – Therealstubot

0

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

os.system ("mount ... ") 

Или, если вы хотите, чтобы изучить использование вывода "POPEN":

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

Я буду, когда-то знаю, что смонтировать. то есть первым аргументом mount является устройство. Вот что я пытаюсь выяснить. – Therealstubot

0

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

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

+0

Мне не понравилось это решение, потому что ему не хватает «атомарности». Это будет работать в крайнем случае, хотя это никогда не сделает меня счастливым. – Therealstubot

+0

Это не совсем так, как слушать другой путь. это также слушает, просто проверяя строки. – dusoft