Здравствуйте. Помогите разобраться. Необходимо, что бы при вставке CD/DVD диска в cdrom, udev запускал программу или скрипт.
Для usb все прекрасно работает, для cdrom не работает.
вот что делю для usb:
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/sbin/usb.sh"
это работает.
вот что делаю для cdrom:
ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYP}E=="scsi_device", ENV{ID_CDROM}==1, RUN+="/sbin/cdrom.sh"
это не рабоатет. Перепробовал разные варианты. Не знаю в чем проблема, не работает и все.
Подскажите пожалуйста в чем может быть проблема? кто с этим сталкивался.
Udev не реагирует на изменение состояния привода
ENV{DEVTYP}E=="scsi_device"
Так и должно быть {DEVTYP}E?
нет, так не должно быть... Извините, опечатка.
Ее исправление не повлияло на работу.
Это одна из версий правил, которое пробовал.
Manko8, покажите полностью файлы с правилами и полный путь до них.
все правила лежат здесь: /etc/udev/rules.d
Спсиок правил:
[console]-rw-r--r--. 1 root root 467 Янв 17 15:58 00-usb.rules
-rw-r--r--. 1 root root 208 Фев 26 20:26 01-cd.rules
-rw-r--r--. 1 root root 6858 Фев 23 2011 40-hplip.rules
-rw-r--r--. 1 root root 706 Фев 23 2011 56-hpmud_support.rules
-rw-r--r--. 1 root root 1652 Авг 25 2010 60-fprint-autosuspend.rules
-rw-r--r--. 1 root root 1060 Июн 29 2010 60-pcmcia.rules
-rw-r--r--. 1 root root 452 Мар 11 2011 60-raw.rules
-rw-r--r--. 1 root root 417 Янв 29 19:27 70-persistent-cd.rules
-rw-r--r--. 1 root root 420 Янв 29 18:40 70-persistent-net.rules
-rw-r--r--. 1 root root 1914 Янв 13 2010 85-pcscd_ccid.rules
-rw-r--r--. 1 root root 320 Май 15 2009 90-alsa.rules
-rw-r--r--. 1 root root 83 Апр 1 2011 90-hal.rules
-rw-r--r--. 1 root root 359 Авг 18 2010 90-rdma.rules
-rw-r--r--. 1 root root 53 Янв 13 2011 91-drm-modeset.rules
-rw-r--r--. 1 root root 2486 Июн 30 2010 97-bluetooth-serial.rules
-rw-r--r--. 1 root root 292 Апр 27 2011 98-kexec.rules
-rw-r--r--. 1 root root 54 Апр 8 2010 99-fuse.rules
[/console]
Manko8, покажите полностью содержимое созданных вами файлов и их имя, где находятся указанные вами строки, а также содержимое файла 70-persistent-cd.rules.
Что именно вы пытаетесь реализовать с помощью данных правил? Возможно, всё уже придумано за вас wink
Реализовать хочу отчуждение CD и USB носителей, на основе БД. Т.е. если носитель не занесен в Бд, то он не монтируется.
содержимое 70-persistent-cd.rules:
[console]# This file was automatically generated by the /lib/udev/write_cd_rules
# program, run by the cd-aliases-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and set the $GENERATED variable.
# VMware_IDE_CDR10 (pci-0000:00:07.1-scsi-1:0:0:0)
SUBSYSTEM=="block", ENV{ID_CDROM}=="?*", ENV{ID_PATH}=="pci-0000:00:07.1-scsi-1:0:0:0", SYMLINK+="cdrom", ENV{GENERATED}="1"
[/console]
содержимое 00-usb.rules
[console]ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", RUN+="/sbin/usb check"
ACTION=="add", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", RUN+="/sbin/usb mount"
ACTION=="remove", SUBSYSTEM=="block", ENV{DEVTYPE}=="partition", RUN+="/sbin/usb remove"
[/console]
содержимое 00-cd.rules
[console]ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", ENV{ID_CDROM}==1, RUN+="/root/cd check"[/console]
Попробуйте это правило чуть изменить:
[console]ACTION=="change", SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", ENV{ID_CDROM}==1, RUN+="/root/cd check"[/console]
Сделать так:
[console]ACTION=="change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_CDROM}==1, RUN+="/root/cd check"[/console]
Не работает. Что бы точно проверить, реагирует udev на событие или нет,
в замен RUN+="/root/cd check" - вставил RUN+="/root/echo.sh"
где echo.sh
[console] #!/bin/bash
echo 'test'>> /root/File_test[/console]
На usb флешку реагирует замечательно, файл создается. На СD/DVD не реагирует совсем...
Manko8, перед подключением CD-диска запустите в консоли
[console]udevadm monitor --property[/console]
чтобы отследить, какие именно события udev при этом происходят.
В порядке полунаучного бреда...
Попробуйте выполнить
mv /etc/udev/rules.d/01-cd.rules /etc/udev/rules.d/71-cd.rules
Делаю после каждого изменения правил.
[console]udevadm control --reload-rules[/console]
Все udev так и отслеживаю:
[console]udevadm monitor --property[/console]
А почему бреда?
А почему бреда?
...моего бреда :o
УРА))) пол дня с этим провозился... заработало... сделал так:
[console]
ACTION=="change", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_CDROM}=="?*", RUN+="/root/echo.sh"
[/console]
и правило переменовал на номер 71-cd.rules
Спасибо огромное!!! )