LINUX.ORG.RU

Запуск скрипта при подключении 2 USB одновременно!

 ,


0

2

Доброго времени суток, заранее прошу прощения если такая тема уже существует, за то что я недостаточно тщательно изучил гугл, яндекс, бинг, майл и прочие поисковые системы, за то что «не умею» пользоваться поиском по форуму. К делу: При подключении ОДНОВРЕМЕННО 2 ОПРЕДЕЛЕННЫХ USB (выборка по s/n к примеру : s/n 12345 и s/n 67890 или по меткам, необходимо: 1.монтировать обе USB флешки с метками FL1 и FL2, 2.запустить скрипт /home/1.sh. 3.Размонтировать флешки, поcле выполнения скрипта 1.sh. ( я так понимаю необходимо дописать некоторые команды в скрипт 1.sh для размонтирования)

ОС - Ubuntu 16.04. Еще раз извиняюсь за наглость, и «не желание» пользоваться поиском, хотя прошерстил весь инет и ничего не понял, собственно пользуясь поиском и попал на данный форум. Спасибо за внимание, гуру Linux'а.



Последнее исправление: nevidomyy (всего исправлений: 6)
Ответ на: комментарий от Zmicier

Спасибо

С дефайном разобрались, само правило в udev будет ? ACTION==«add», ENV{DEVTYPE}==«disk», ENV{ID_SERIAL}==«12345», define ACTION==«add», ENV{DEVTYPE}==«disk», ENV{ID_SERIAL}==«67890», RUN+=«/bin/bash /home/1sh.sh»

А монтирование и размонтирование?

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

Если не затрудняетесь, можно добавить конкретики - в linux новичек, пока трудно разбираться, но я пытаюсь. При подключенных к ПК одновременно двух USB, выбранных по SN или Метке необходимо их примонтировать, запустить скрипт и по его окончании размонтировать устройства.

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

Важно, что бы устройства были не по очереди подключены, а одновременно. Необходимо исключить возможность срабатывания скрипта при подключение одного- потом горячее извлечение и подключение второго. Только при наличии подключения 2 носителей, в данный момент времени.

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

Опрашивать после второго первый, потом второй, первый и т.д., при молчании паниковать и рубить канат.

Именно одновременно — это не скрипты уже, а реалтайм нормальный нужен.

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

Да на сях демон накатать простой, который будет, используя udev, мониторить. Увидел подключение одного устройства — выждал пару секунд, если второе есть — запустил скрипт через system (или еще как). А на конфигах удева такое не сделать никак...

ТС, на тебе мое правило для монтирования флешек:

cat /etc/udev/rules.d/99-mnt.rules 
# монтирование съемных накопителей
KERNEL=="sd[b-z]", GOTO="do-disk-rules"
KERNEL!="sd[b-z][0-9]", GOTO="end-of-file"
LABEL="do-disk-rules"
ACTION=="add", ENV{ID_USB_DRIVER}="usb-storage", GROUP="disk"
IMPORT{program}="/sbin/blkid -o udev -p %N"
ACTION=="remove", ENV{ID_FS_TYPE}!="", RUN+="/bin/sed -i '/\/dev\/%k /d' /etc/fstab"
ACTION=="remove", ENV{ID_FS_TYPE}!="", RUN+="/bin/rmdir /media/$env{ID_FS_TYPE}-%k"
ACTION=="add", ENV{ID_FS_TYPE}!="", RUN+="/bin/mkdir -p /media/$env{ID_FS_TYPE}-%k"
# монтирование раздела fat32
ACTION=="add", ENV{ID_FS_TYPE}=="vfat", RUN+="/bin/sed -i '$a\/dev/%k /media/$env{ID_FS_TYPE}-%k vfat rw,noatime,noauto,noatime,dmask=022,user,fmask=133,iocharset=koi8-r 0 0' /etc/fstab"
# монтирование раздела ntfs
ACTION=="add", ENV{ID_FS_TYPE}=="ntfs", RUN+="/bin/sed -i '$a\/dev/%k /media/$env{ID_FS_TYPE}-%k ntfs-3g rw,noatime,noauto,dmask=000,fmask=111,user,locale=ru_RU.koi8-r,allow_other 0 0' /etc/fstab"
# монтирование прочих ФС
ACTION=="add", ENV{ID_FS_TYPE}!="", ENV{ID_FS_TYPE}!="ntfs|vfat", RUN+="/bin/sed -i '$a\/dev/%k /media/$env{ID_FS_TYPE}-%k $env{ID_FS_TYPE}  defaults,noatime,user,exec,suid,dev 0 0' /etc/fstab"
LABEL="end-of-file"
#ENV{ID_USB_DRIVER}="usb-storage",
Т.к. ты хочешь автоматом, а не руками, как я делаю, вместо правки fstab сразу запускай mount. Но твоей беде это не поможет. Штудируй С или хотя бы пхытон.

anonymous
()
Ответ на: комментарий от nevidomyy

Сделать udev rules для обеих флешек

KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="00001", SYMLINK+="device-1", RUN+="/tmp/formatc.sh"
KERNEL=="sd?1", SUBSYSTEMS=="usb", ATTRS{serial}=="00002", SYMLINK+="device-2", RUN+="/tmp/formatc.sh"

А в скрипте проверять одновременное наличие /dev/device-1 и /dev/device-2

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