LINUX.ORG.RU

Старт cupsd при втыкании/включении принтера

 ,


0

1
[root] ~ # cat /etc/udev/rules.d/10-printer.rules 
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="326c", RUN+="/etc/init.d/cupsd start", ENV{REMOVE_CMD}="/etc/init.d/cupsd stop"

Выключать оно выключает, а вот включать не хочет...
Хотелось бы знать, что здесь не так, и как определить принтер не по id'ам, а по типу устройства, чтобы другие принтеры тоже учитывались.

★★★

Как то странно, на добавление устройства у тебя стоит команда выключения cupsd

ENV{REMOVE_CMD}="/etc/init.d/cupsd stop"
leonidko ★★★★
()
Ответ на: комментарий от batekman

Тебе подсказывают, последний элемент убери. И оформи отдельное правило для удаления данного устройства.

ACTION=="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="326c", RUN+="/etc/init.d/cupsd stop"
leonidko ★★★★
()
Ответ на: комментарий от irton
[root] ~ # cat /etc/udev/rules.d/10-printer.rules 
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="326c", RUN+="/etc/init.d/cupsd start"
ACTION=="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="326c", RUN+="/etc/init.d/cupsd stop"

udevadm control --reload-rules и /etc/init.d/udev restart, кстати, делал.

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

Не, никак :(
Может быть, есть какой-нибудь параметр ENV, являющийся аналогом REMOVE_CMD, но действующий для добавления?..

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

нет, синтаксически все вроде правильно.

НО припоминаю я что мне дяденька один жаловался на проблемы с запуском, а сделай sh скрипт с командой запуска cups, и подставь его в правило.

можно бы еще глянуть атрибуты принтера и сделать более общее правило

irton ★★★★★
()
Ответ на: комментарий от irton
[root] ~ # cat /etc/udev/rules.d/10-printer.rules 
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="326c", RUN+="/usr/local/bin/start_cups"
ACTION=="remove", SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="326c", RUN+="/etc/init.d/cupsd stop"
[root] ~ # cat /usr/local/bin/start_cups 
#!/bin/sh
/etc/init.d/cupsd start
echo 1 >> /root/udevcups
[root] ~ # ls -l /root/udevcups
ls: cannot access /root/udevcups: No such file or directory

(это уже после перевтыкания)

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

закоментируй строку remove чтоб не мешала.

ну мой последний вариант вместо subsystem== сделать subsystems==

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

закоментируй строку remove чтоб не мешала.

Не помогло.

ну мой последний вариант вместо subsystem== сделать subsystems==

Это сомнительный вариант - у меня в vim'e SUBSYSTEM подсвечивается, а SUBSYSTEMS - уже нет... Да и remove именно с SUBSYSTEM работает.

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

однозначно на это может сказать только вывод атрибутов принтера, т.к. в udev разных версий игрались с синтаксисом

irton ★★★★★
()
Ответ на: комментарий от irton
[root] ~ # udevadm info --path=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
P: /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
N: bus/usb/002/039
E: BUSNUM=002
E: DEVNAME=/dev/bus/usb/002/039
E: DEVNUM=039
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
E: ID_MODEL=Samsung_ML-2010
E: ID_MODEL_ENC=Samsung\x20ML-2010
E: ID_MODEL_FROM_DATABASE=ML-2010P Mono Laser Printer
E: ID_MODEL_ID=326c
E: ID_REVISION=0100
E: ID_SERIAL=Samsung_Samsung_ML-2010_3D66BKCP128692E.
E: ID_SERIAL_SHORT=3D66BKCP128692E.
E: ID_USB_INTERFACES=:070102:
E: ID_VENDOR=Samsung
E: ID_VENDOR_ENC=Samsung
E: ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd
E: ID_VENDOR_ID=04e8
E: MAJOR=189
E: MINOR=166
E: PRODUCT=4e8/326c/100
E: SUBSYSTEM=usb
E: TYPE=0/0/0
E: USEC_INITIALIZED=8915965185
batekman ★★★
() автор топика
Ответ на: комментарий от batekman

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

irton ★★★★★
()
Ответ на: комментарий от irton
[root] ~ # udevadm info --attribute-walk --path=/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0':
    KERNEL=="2-1.2:1.0"
    SUBSYSTEM=="usb"
    DRIVER==""
    ATTR{bInterfaceClass}=="07"
    ATTR{bInterfaceSubClass}=="01"
    ATTR{bInterfaceProtocol}=="02"
    ATTR{bNumEndpoints}=="02"
    ATTR{supports_autosuspend}=="1"
    ATTR{bAlternateSetting}==" 0"
    ATTR{bInterfaceNumber}=="00"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2':
    KERNELS=="2-1.2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="1.2"
    ATTRS{idVendor}=="04e8"
    ATTRS{speed}=="12"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="16"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="52"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="c0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="0"
    ATTRS{bcdDevice}=="0100"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="3D66BKCP128692E."
    ATTRS{version}==" 1.10"
    ATTRS{urbnum}=="10"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Samsung"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="326c"
    ATTRS{bDeviceClass}=="00"
    ATTRS{product}=="Samsung ML-2010"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-1':
    KERNELS=="2-1"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="01"
    ATTRS{devpath}=="1"
    ATTRS{idVendor}=="8087"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="2"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="6"
    ATTRS{bcdDevice}=="0000"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="1423"
    ATTRS{ltm_capable}=="no"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0024"
    ATTRS{bDeviceClass}=="09"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2':
    KERNELS=="usb2"
    SUBSYSTEMS=="usb"
    DRIVERS=="usb"
    ATTRS{bDeviceSubClass}=="00"
    ATTRS{bDeviceProtocol}=="00"
    ATTRS{devpath}=="0"
    ATTRS{idVendor}=="1d6b"
    ATTRS{speed}=="480"
    ATTRS{bNumInterfaces}==" 1"
    ATTRS{bConfigurationValue}=="1"
    ATTRS{bMaxPacketSize0}=="64"
    ATTRS{authorized_default}=="1"
    ATTRS{busnum}=="2"
    ATTRS{devnum}=="1"
    ATTRS{configuration}==""
    ATTRS{bMaxPower}=="  0mA"
    ATTRS{authorized}=="1"
    ATTRS{bmAttributes}=="e0"
    ATTRS{bNumConfigurations}=="1"
    ATTRS{maxchild}=="3"
    ATTRS{bcdDevice}=="0308"
    ATTRS{avoid_reset_quirk}=="0"
    ATTRS{quirks}=="0x0"
    ATTRS{serial}=="0000:00:1d.0"
    ATTRS{version}==" 2.00"
    ATTRS{urbnum}=="106"
    ATTRS{ltm_capable}=="no"
    ATTRS{manufacturer}=="Linux 3.8.13-gentoo ehci_hcd"
    ATTRS{removable}=="unknown"
    ATTRS{idProduct}=="0002"
    ATTRS{bDeviceClass}=="09"
    ATTRS{product}=="EHCI Host Controller"

  looking at parent device '/devices/pci0000:00/0000:00:1d.0':
    KERNELS=="0000:00:1d.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="ehci-pci"
    ATTRS{irq}=="23"
    ATTRS{subsystem_vendor}=="0x144d"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x0c0320"
    ATTRS{companion}==""
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{local_cpus}=="00000000,0000000f"
    ATTRS{device}=="0x1e26"
    ATTRS{uframe_periodic_max}=="100"
    ATTRS{enable}=="1"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-3"
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_device}=="0xc652"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""
batekman ★★★
() автор топика
Ответ на: комментарий от batekman

ну сам видишь, subsystems везде.

и я не удивлюсь если вместо action надо будет actions писать.

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