LINUX.ORG.RU
решено ФорумAdmin

[РЕШЕНО] Скрипт *.rules не отрабатывает ни в какую события.

 ,


0

1

Здравствуйте! Возникла такая ситуация - имеется рутокен с ЭЦП, который подключается по средству USB. Необходимо выполнить произвольный скрипт при подключении/отключении токена. Реализовал по средству скрипта 90-rutoken.rules, имеющий следующее содержание:

SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="0a89", ATTRS{idProduct}=="0025", RUN+="/usr/bin/rutoken-inserted.sh"
SUBSYSTEM=="usb", ACTION=="remove", ENV{ID_VENDOR_ID}=="0a89", ENV{ID_MODEL_ID}=="0025", RUN+="/usr/bin/rutoken-removed.sh"

0a89 и 0025 взял из вывода команды lsusb

Bus 001 Device 009: ID 0a89:0025 Aktiv Rutoken lite

Однако же, при подключении/отключении токена (для понимания пусть будет usb-флеш) не отрабатывает нужное событие - запуск сценария.

Решил посмотреть, что происходит вообще, выполнив

sudo udevadm test  --action=add /devices/pci0000:00/0000:00:14.0/usb1/1-1

Получил вывод:

This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

Load module index
Network interface NamePolicy= disabled on kernel command line, ignoring.
Parsed configuration file /usr/lib/systemd/network/99-default.link
Created link configuration context.
Reading rules file: /usr/lib/udev/rules.d/50-firmware.rules
Reading rules file: /usr/lib/udev/rules.d/50-udev-default.rules
Reading rules file: /usr/lib/udev/rules.d/55-dm.rules
Reading rules file: /usr/lib/udev/rules.d/56-hpmud.rules
Reading rules file: /usr/lib/udev/rules.d/60-block.rules
Reading rules file: /usr/lib/udev/rules.d/60-cdrom_id.rules
Reading rules file: /usr/lib/udev/rules.d/60-drm.rules
Reading rules file: /usr/lib/udev/rules.d/60-evdev.rules
Reading rules file: /usr/lib/udev/rules.d/60-fly-brightness.rules
Reading rules file: /usr/lib/udev/rules.d/60-input-id.rules
Reading rules file: /usr/lib/udev/rules.d/60-libgphoto2-6.rules
Reading rules file: /usr/lib/udev/rules.d/60-libsane1.rules
Reading rules file: /usr/lib/udev/rules.d/60-pcmcia.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-alsa.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-input.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-dm.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage-tape.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-storage.rules
Reading rules file: /usr/lib/udev/rules.d/60-persistent-v4l.rules
Reading rules file: /usr/lib/udev/rules.d/60-sensor.rules
Reading rules file: /usr/lib/udev/rules.d/60-serial.rules
Reading rules file: /usr/lib/udev/rules.d/61-kde-bluetooth-rfkill.rules
Reading rules file: /usr/lib/udev/rules.d/64-btrfs.rules
Reading rules file: /usr/lib/udev/rules.d/64-xorg-xkb.rules
Reading rules file: /usr/lib/udev/rules.d/65-libwacom.rules
Reading rules file: /usr/lib/udev/rules.d/69-libmtp.rules
Reading rules file: /usr/lib/udev/rules.d/69-wacom.rules
Reading rules file: /usr/lib/udev/rules.d/70-joystick.rules
Reading rules file: /usr/lib/udev/rules.d/70-mouse.rules
Reading rules file: /usr/lib/udev/rules.d/70-power-switch.rules
Reading rules file: /usr/lib/udev/rules.d/70-touchpad.rules
Reading rules file: /usr/lib/udev/rules.d/70-uaccess.rules
Reading rules file: /usr/lib/udev/rules.d/71-ipp-usb.rules
Reading rules file: /usr/lib/udev/rules.d/71-seat.rules
Reading rules file: /usr/lib/udev/rules.d/73-seat-late.rules
Reading rules file: /usr/lib/udev/rules.d/73-special-net-names.rules
Reading rules file: /usr/lib/udev/rules.d/73-usb-net-by-mac.rules
Reading rules file: /usr/lib/udev/rules.d/75-net-description.rules
Reading rules file: /usr/lib/udev/rules.d/75-probe_mtd.rules
Reading rules file: /usr/lib/udev/rules.d/78-sound-card.rules
Reading rules file: /usr/lib/udev/rules.d/80-debian-compat.rules
Reading rules file: /usr/lib/udev/rules.d/80-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/80-ifupdown.rules
Reading rules file: /usr/lib/udev/rules.d/80-iio-sensor-proxy.rules
Reading rules file: /usr/lib/udev/rules.d/80-libinput-device-groups.rules
Reading rules file: /usr/lib/udev/rules.d/80-net-setup-link.rules
Reading rules file: /usr/lib/udev/rules.d/80-udisks2.rules
Reading rules file: /usr/lib/udev/rules.d/84-nm-drivers.rules
Reading rules file: /usr/lib/udev/rules.d/85-hwclock.rules
Reading rules file: /usr/lib/udev/rules.d/85-nm-unmanaged.rules
Reading rules file: /usr/lib/udev/rules.d/90-alsa-restore.rules
Reading rules file: /usr/lib/udev/rules.d/90-console-setup.rules
Reading rules file: /usr/lib/udev/rules.d/90-libinput-fuzz-override.rules
Reading rules file: /usr/lib/udev/rules.d/90-nm-thunderbolt.rules
Reading rules file: /usr/lib/udev/rules.d/90-pulseaudio.rules
Reading rules file: /etc/udev/rules.d/90-rutoken.rules
Reading rules file: /usr/lib/udev/rules.d/91-group-floppy.rules
Reading rules file: /usr/lib/udev/rules.d/92-libccid.rules
Reading rules file: /usr/lib/udev/rules.d/95-dm-notify.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-csr.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-hid.rules
Reading rules file: /usr/lib/udev/rules.d/95-upower-wup.rules
Reading rules file: /usr/lib/udev/rules.d/99-libsane1.rules
Reading rules file: /usr/lib/udev/rules.d/99-monitor-hotplug.rules
Reading rules file: /usr/lib/udev/rules.d/99-systemd.rules
Rules contain 196608 bytes tokens (16384 * 12 bytes), 27864 bytes strings
19654 strings (157707 bytes), 17141 de-duplicated (132357 bytes), 2514 trie nodes used
Invalid inotify descriptor.
Starting 'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1 1 9'
'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1 1 9'(out) '0'
Process 'mtp-probe /sys/devices/pci0000:00/0000:00:14.0/usb1/1-1 1 9' succeeded.
PDAC: PDPL is zero
PDAC: AUDIT is empty or invalid
DEVPATH=/devices/pci0000:00/0000:00:14.0/usb1/1-1
DEVNAME=/dev/bus/usb/001/009
DEVTYPE=usb_device
DRIVER=usb
PRODUCT=a89/25/100
TYPE=0/0/0
BUSNUM=001
DEVNUM=009
MAJOR=189
MINOR=8
ACTION=add
SUBSYSTEM=usb
ID_VENDOR=Aktiv
ID_VENDOR_ENC=Aktiv
ID_VENDOR_ID=0a89
ID_MODEL=Rutoken_lite
ID_MODEL_ENC=Rutoken\x20lite
ID_MODEL_ID=0025
ID_REVISION=0100
ID_SERIAL=Aktiv_Rutoken_lite
ID_BUS=usb
ID_USB_INTERFACES=:0b0000:
ID_VENDOR_FROM_DATABASE=Aktiv
ID_MODEL_FROM_DATABASE=Rutoken lite
USEC_INITIALIZED=5312134048
run: '/usr/bin/rutoken-inserted.sh'
Unload module index
Unloaded link configuration context.

То есть вроде бы сценарий был запущен, но ничего не произошло. Сам скрипт rutoken-inserted.sh работает, я его вручную запускал, дал права на исполнение.

Подскажите, пожалуйста, в чём может быть проблема?



Последнее исправление: dmitriyqwe (всего исправлений: 1)
Ответ на: комментарий от firkax

Ну, я фиг его знает, как там внутри устроено, но много кто жалуется, что скрипты со слипом внутри не отрабатывают. Похоже, что сделать через юниты systemd будет самым правильным подходом.

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

Спасибо большое за поддержание диалога в топике! Создав 2 systemd-юнита и прописав в udev правилах инициализацию юнита - всё стало работать как часы.

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

Спасибо большое за поддержание диалога в тoпике! Создав 2 systemd-юнита и прописав в udev правилах инициализацию юнита - всё стало работать как часы.

dmitriyqwe
() автор топика