LINUX.ORG.RU
ФорумAdmin

поиск usb-устройства

 ,


0

1

система: gentoo

задача: определить имя воткнутой usb-флешки

решение на данный момент:

dmesg | grep «Attached SCSI...» | grep «sd $(ls /proc/scsi/usb-storage)»

все нормально работает, но может есть более правильный путь?



Последнее исправление: cetjs2 (всего исправлений: 1)

Ну, lsusb есть, ее вывод попроще парсить, только фиг определишь, какое из устройств воткнуто последним. А вообще, какова конечная цель? Еще можно через udev определять имя, наверное.

Kiborg ★★★
()

если определить ту, которую только что воткнул то проще dmesg |tail

af5 ★★★★★
()
Ответ на: комментарий от Kiborg

цель: найти только что воткнутую в комп флешку и записать на нее нужную инфу. в системе может остаться мусор от неразмонтированных флешек

пишется все это дело на питоне, но я этот момент опустил, чтобы не грузить вам мозг ненужной инфой. важен сам принцип

last_zombie
() автор топика
Ответ на: комментарий от last_zombie

А оно будет запускаться руками, т. е. пользователь воткнул флешку и нажал кнопку, а если не нажал, то записываться не должно? Или автоматом как только флешку воткнули, сразу фигачим что-то на неё?

Kiborg ★★★
()
Ответ на: комментарий от Kiborg

нажал - примонтировало... записалось... отмонтировало

железяка спецуевая, так что автомаунт и прочие излишки считаем лишними

last_zombie
() автор топика
Ответ на: комментарий от last_zombie

Наверное, проще настроить devmon из sys-apps/udevil, чтобы это делалось вместо автомонтирования. Или, если нужен визуальный контроль, переписать easymount (с qt-apps.org).

ABW ★★★★★
()
Ответ на: комментарий от last_zombie

Ну я не могу сказать, что прям спец по данной тематике, но парсить dmesg, имхо, как-то совсем костыляво (хотя, для одноразовой наколенной поделки я бы так и сделал).

Я бы в данном случае сделал правило udev, которое при появлении нового usb накопителя заносило бы данные о нем в какой-нибудь файл скриптом, а при удалении носителя зачищало бы файл, если там в данный момент записано удаляемое устройство. Может лучше не файл, а как-то еще, демона например сделать, не знаю. Но главное, надо куда-нибудь (например, в файл) как-то получить имя устройства, если оно еще не было извлечено, а именами заведует как раз udev.

Дальше возможны разные оптимизации. Если устройство одно и заранее известно, можно его ID прописать в правило, чтобы на остальные не реагировать, а этому устройству прописать специальное имя. Если невозможна ситуация, что две флешки по очереди вставили, а потом одну извлекли, а на вторую надо записать данные, то можно не проверять содержимое файла при зачистке, просто стереть и всё.

Ну как-то так.

Kiborg ★★★
()

правила для udev уже предлагали?

dimon555 ★★★★★
()

Про lsblk никто не вспомнил.

dexpl ★★★★★
()

А что такое "имя флешки"?

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от last_zombie

Тогда только udev: правило установит нужный флаг, а твой скриптик сделает всю остальную работу. Но учти: долгоиграющие процессы ты удевом не запустишь, поэтому я про флаг и говорю.

Я бы на сях написал небольшой сервис, который при запуске удевом в message queue пихал нужную информацию, а основной демон (тоже на сях, т.к. я больше нихрена не знаю и знать не хочу) брал бы эту информацию и выполнял нужные действия.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от last_zombie

Для сходной задачи у меня

USBSTORAGE=`find /dev/disk/by-path/ -name '*usb*part1*' | tail -n 1`

можно доделать как нужно

Elyas ★★★★★
()
Ответ на: комментарий от last_zombie

через udev можно в /dev создавать и удалять symlink на подключенную флешку, а прога пусть с этим symlink'ом работает

KERNEL=="sd*", ACTION=="add", SYMLINK+="last_connected_drive"

armbox
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.