Ось Debian etch, KDE..
При подключении флешки можно вызвать исполняемый скрипт, запихав
/etc/udev/rules.d
правило типа:
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", RUN="/root/test.sh"
срабатывает нормально.
Вопрос: почему не работает если добавить:
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/root/test_remove.sh"
?? в чем косяк?
Можно ли вообще отловить данное событие - как извлечение флешки?
запуск скрипта при извлечении флешки
Модератор: Bizdelnick
-
- Сообщения: 311
- ОС: Debian
запуск скрипта при извлечении флешки
newblog.kz - заработай на своих статьях :)
-
- Сообщения: 1588
- Статус: openSUSE Localization Team
- ОС: openSUSE Tumbleweed x86-64
Re: запуск скрипта при извлечении флешки
Тут куча вариантов: уверены ли вы, что событие называется remove? Уверены ли вы, что во втором случае надо писать +=, а не =, как в первом? А скрипт этот точно исполняемый?
Спасибо сказали:
-
- Сообщения: 311
- ОС: Debian
Re: запуск скрипта при извлечении флешки
с помощью udevmonitor --env
при вытаскивании флешки вижу (действие remove происходит):
UDEV [1245059664.359228] remove@/block/sdb
UDEV_LOG=3
ACTION=remove
DEVPATH=/block/sdb
SUBSYSTEM=block
SEQNUM=1267
MINOR=16
MAJOR=8
PHYSDEVPATH=/devices/pci0000:00/0000:00:1d.7/usb5/5-7/5-7:1.0/host12/target12:0:0/12:0:0:0
PHYSDEVBUS=scsi
PHYSDEVDRIVER=sd
UDEVD_EVENT=1
ID_VENDOR=JetFlash
ID_MODEL=Transcend_32GB
ID_REVISION=8.07
ID_SERIAL=JetFlash_Transcend_32GB_4JRWAUI1
ID_TYPE=disk
ID_BUS=usb
ID_PATH=pci-0000:00:1d.7-usb-0:7:1.0-scsi-0:0:0:0
DEVLINKS=/dev/disk/by-id/usb-JetFlash_Transcend_32GB_4JRWAUI1 /dev/disk/by-path/pci-0000:00:1d.7-usb-0:7:1.0-scsi-0:0:0:0
DEVNAME=/dev/sdb
комбинировал различные варианты, событие add срабатывает всегда, а remove -никогда : /
скрипт исполняемый, точно такой же скрипт(с другим именем) успешно выполняется при подключении флешки
-rwxr-xr-x 1 root root 48 2009-06-15 14:04 test_remove.sh
newblog.kz - заработай на своих статьях :)
-
- Сообщения: 869
- Статус: Семь раз понюхай, один раз откуси!
- ОС: SlackWare 12.1
Re: запуск скрипта при извлечении флешки
Покажите содержимое обоих скриптов.
Кстати говоря, в мануале по udev сказано, что если в параметре RUN используется shell-скрипт, то обязательно нужно указать первой строкой в этом скрипте оболочку, которая будет его выполнять:
Кстати говоря, в мануале по udev сказано, что если в параметре RUN используется shell-скрипт, то обязательно нужно указать первой строкой в этом скрипте оболочку, которая будет его выполнять:
Код: Выделить всё
#!/bin/sh
*- Большинство проблем, дружок, завсегда покажет лог! -*
Спасибо сказали:
-
- Сообщения: 273
- ОС: Alt 5.0
-
- Сообщения: 311
- ОС: Debian
Re: запуск скрипта при извлечении флешки
Mage-Warrior писал(а): ↑15.06.2009 15:11Покажите содержимое обоих скриптов.
Кстати говоря, в мануале по udev сказано, что если в параметре RUN используется shell-скрипт, то обязательно нужно указать первой строкой в этом скрипте оболочку, которая будет его выполнять:
Код: Выделить всё
#!/bin/sh
скрипт 1:
#!/bin/bash
echo "test" >> 1111111111.txt
скрипт 2:
#!/bin/bash
echo "test" >> 2222222222.txt
Если я во втором случае ставлю add - то все выполняется на ура... если remove - то скрипт вообще не выполняется. Такое впечатление что не отлавливается событие.. : /
пробывал все варианты тусовать add потом remove или remove потом add и т.д.
вообщем add - событие происходит, remove - нет (
Как? Только средствами udev или нет?
newblog.kz - заработай на своих статьях :)
-
- Сообщения: 139
- ОС: 3.17.3-300.fc21.x86_64
Re: запуск скрипта при извлечении флешки
KERNEL=="sd*", ACTION=="remove", RUN+="/root/test_remove.sh" ? без usb?
dd if=/dev/zero of=/dev/null bs=1M
И пусть весь мир подождет.....
И пусть весь мир подождет.....
Спасибо сказали:
-
- Сообщения: 1744
- Статус: Ъ-участник
- ОС: Debian/Ubuntu/etc
Re: запуск скрипта при извлечении флешки
А может событие называется unmount? Или umount.
Спасибо сказали:
-
- Сообщения: 273
- ОС: Alt 5.0
Re: запуск скрипта при извлечении флешки
у меня стоит ivman он работает с hal можно через ivman повесить (у меня он и монтирует и размонтирует при этом выполняются внешние скрипты), можно через hal но тут могу подсказать только какое свойство отслеживать, а как до него добраться не в курсе...
-
- Сообщения: 187
Re: запуск скрипта при извлечении флешки
udev-rule
При обоих условиях скрипт будет выполняться 2-а раза.
Код: Выделить всё
1 KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", RUN="/root/test.sh"
2 BUS=="usb", SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="remove", RUN+="/root/testr.sh"
При обоих условиях скрипт будет выполняться 2-а раза.
Спасибо сказали:
-
- Сообщения: 40
- ОС: Archlinux
Re: запуск скрипта при извлечении флешки
Когда-то у меня работало такое правило udev
/etc/udev/rules.d/50-usb-block.rules
usb-automount.sh дальше посылал команду DBUS/HAL для монтирования флешки. Правило для remove я потом убрал, т.к. /dev/sdХ уже не существовало на момент получения управления, устройство размонировалось само, папка удалялась HAL-ом.
А потом я сделал такой python-скрипт, которым сейчас пользуюсь. Для KDE, которое не монтирует флешки автоматом, самое-то.
/etc/udev/rules.d/50-usb-block.rules
Код: Выделить всё
# First rule
BUS=="usb", SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="add", NAME="%k", RUN+="/etc/udev/usb-automount.sh add %k"
# Second rule
BUS=="usb", SUBSYSTEM=="block", KERNEL=="sd*", ACTION=="remove", RUN+="/etc/udev/usb-automount.sh remove %k"
usb-automount.sh дальше посылал команду DBUS/HAL для монтирования флешки. Правило для remove я потом убрал, т.к. /dev/sdХ уже не существовало на момент получения управления, устройство размонировалось само, папка удалялась HAL-ом.
А потом я сделал такой python-скрипт, которым сейчас пользуюсь. Для KDE, которое не монтирует флешки автоматом, самое-то.
Ubuntu on Acer Aspire 7520 (AMD Turion 64, GeForce 8400MG), в прошлом Arch
Спасибо сказали:
-
- Сообщения: 311
- ОС: Debian
Re: запуск скрипта при извлечении флешки
Спасибо! сработало!!!

zshgm писал(а): ↑15.06.2009 11:54Ось Debian etch, KDE..
При подключении флешки можно вызвать исполняемый скрипт, запихав
/etc/udev/rules.d
правило типа:
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="add", RUN="/root/test.sh"
срабатывает нормально.
Вопрос: почему не работает если добавить:
KERNEL=="sd*", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/root/test_remove.sh"
?? в чем косяк?
Можно ли вообще отловить данное событие - как извлечение флешки?
Правильно оказалось без SUBSYSTEMS=="usb"
KERNEL=="sd*", ACTION=="remove", RUN+="/root/test_remove.sh"
как подсказал ekkl, за что ему огромное спасибо

остальным спасибо за участие!

тему можно закрывать..
newblog.kz - заработай на своих статьях :)
-
- Сообщения: 273
- ОС: Alt 5.0