udev rule erstellen
-
Hallo, hätte da noch eine Frage zum erstellen einer udev rule für ein
USB 3.0 Datenträger.Ich verwende für eine Regel z.B. zum ausführen eines \1:
KERNEL=="sd?1", SUBSYSTEM=="scsi", ATTRS{serial}=="1627218396", SYMLINK+="removeable", RUN+="/usr/local/bin/do_sth.sh /dev/removeable"
Ich kann jetzt garnicht sagen, ob ich da etwas falsch mache oder nicht, hab schon zig Möglichkeiten versucht, nur leider wird das Script nie ausgeführt.
Die nötigen Attribute, habe ich aus der Ausgabe über
udevadm info -a -p `udevadm info -q path -n /dev/sdX`
looking at device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4/4-1/4-1:1.0/host6/target6:0:0/6:0:0:0/block/sdb': KERNEL=="sdb" SUBSYSTEM=="block" DRIVER=="" ATTR{ro}=="0" ATTR{size}=="61734912" ATTR{stat}==" 736 30434 31957 412 4 1 5 4 0 216 416" ATTR{range}=="16" ATTR{discard_alignment}=="0" ATTR{events}=="media_change" ATTR{ext_range}=="256" ATTR{events_poll_msecs}=="2000" ATTR{alignment_offset}=="0" ATTR{inflight}==" 0 0" ATTR{removable}=="1" ATTR{capability}=="51" ATTR{events_async}=="" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4/4-1/4-1:1.0/host6/target6:0:0/6:0:0:0': KERNELS=="6:0:0:0" SUBSYSTEMS=="scsi" DRIVERS=="sd" ATTRS{rev}=="1.00" ATTRS{type}=="0" ATTRS{scsi_level}=="7" ATTRS{model}=="Transcend 32GB " ATTRS{state}=="running" ATTRS{queue_type}=="none" ATTRS{iodone_cnt}=="0x347" ATTRS{iorequest_cnt}=="0x347" ATTRS{device_busy}=="0" ATTRS{evt_capacity_change_reported}=="0" ATTRS{timeout}=="30" ATTRS{evt_media_change}=="0" ATTRS{max_sectors}=="240" ATTRS{ioerr_cnt}=="0x1" ATTRS{queue_depth}=="1" ATTRS{vendor}=="JetFlash" ATTRS{evt_soft_threshold_reached}=="0" ATTRS{device_blocked}=="0" ATTRS{evt_mode_parameter_change_reported}=="0" ATTRS{evt_lun_change_reported}=="0" ATTRS{evt_inquiry_change_reported}=="0" ATTRS{iocounterbits}=="32" ATTRS{eh_timeout}=="10" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4/4-1/4-1:1.0/host6/target6:0:0': KERNELS=="target6:0:0" SUBSYSTEMS=="scsi" DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4/4-1/4-1:1.0/host6': KERNELS=="host6" SUBSYSTEMS=="scsi" DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4/4-1/4-1:1.0': KERNELS=="4-1:1.0" SUBSYSTEMS=="usb" DRIVERS=="usb-storage" ATTRS{bInterfaceClass}=="08" ATTRS{bInterfaceSubClass}=="06" ATTRS{bInterfaceProtocol}=="50" ATTRS{bNumEndpoints}=="02" ATTRS{supports_autosuspend}=="1" ATTRS{bAlternateSetting}==" 0" ATTRS{bInterfaceNumber}=="00" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4/4-1': KERNELS=="4-1" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="00" ATTRS{devpath}=="1" ATTRS{idVendor}=="8564" ATTRS{speed}=="5000" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPacketSize0}=="9" ATTRS{busnum}=="4" ATTRS{devnum}=="2" ATTRS{configuration}=="" ATTRS{bMaxPower}=="304mA" ATTRS{authorized}=="1" ATTRS{bmAttributes}=="80" ATTRS{bNumConfigurations}=="1" ATTRS{maxchild}=="0" ATTRS{bcdDevice}=="1075" ATTRS{avoid_reset_quirk}=="0" ATTRS{quirks}=="0x0" ATTRS{serial}=="1627218396" ATTRS{version}==" 3.00" ATTRS{urbnum}=="2450" ATTRS{ltm_capable}=="no" ATTRS{manufacturer}=="JetFlash" ATTRS{removable}=="unknown" ATTRS{idProduct}=="1000" ATTRS{bDeviceClass}=="00" ATTRS{product}=="Mass Storage Device" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/usb4': KERNELS=="usb4" SUBSYSTEMS=="usb" DRIVERS=="usb" ATTRS{bDeviceSubClass}=="00" ATTRS{bDeviceProtocol}=="03" ATTRS{devpath}=="0" ATTRS{idVendor}=="1d6b" ATTRS{speed}=="5000" ATTRS{bNumInterfaces}==" 1" ATTRS{bConfigurationValue}=="1" ATTRS{bMaxPacketSize0}=="9" ATTRS{authorized_default}=="1" ATTRS{busnum}=="4" ATTRS{devnum}=="1" ATTRS{configuration}=="" ATTRS{bMaxPower}=="0mA" ATTRS{authorized}=="1" ATTRS{bmAttributes}=="e0" ATTRS{bNumConfigurations}=="1" ATTRS{maxchild}=="2" ATTRS{bcdDevice}=="0313" ATTRS{avoid_reset_quirk}=="0" ATTRS{quirks}=="0x0" ATTRS{serial}=="0000:05:00.0" ATTRS{version}==" 3.00" ATTRS{urbnum}=="90" ATTRS{ltm_capable}=="yes" ATTRS{manufacturer}=="Linux 3.13.0-43-generic xhci_hcd" ATTRS{removable}=="unknown" ATTRS{idProduct}=="0003" ATTRS{bDeviceClass}=="09" ATTRS{product}=="xHCI Host Controller" looking at parent device '/devices/pci0000:00/0000:00:1c.3/0000:05:00.0': KERNELS=="0000:05:00.0" SUBSYSTEMS=="pci" DRIVERS=="xhci_hcd" ATTRS{irq}=="19" ATTRS{subsystem_vendor}=="0x1025" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x0c0330" ATTRS{consistent_dma_mask_bits}=="64" ATTRS{dma_mask_bits}=="64" ATTRS{local_cpus}=="ff" ATTRS{device}=="0x0194" ATTRS{enable}=="1" ATTRS{msi_bus}=="" ATTRS{local_cpulist}=="0-7" ATTRS{vendor}=="0x1033" ATTRS{subsystem_device}=="0x054c" ATTRS{d3cold_allowed}=="1" looking at parent device '/devices/pci0000:00/0000:00:1c.3': KERNELS=="0000:00:1c.3" SUBSYSTEMS=="pci" DRIVERS=="pcieport" ATTRS{irq}=="19" ATTRS{subsystem_vendor}=="0x1025" ATTRS{broken_parity_status}=="0" ATTRS{class}=="0x060400" ATTRS{consistent_dma_mask_bits}=="32" ATTRS{dma_mask_bits}=="32" ATTRS{local_cpus}=="ff" ATTRS{device}=="0x1c16" ATTRS{enable}=="2" ATTRS{msi_bus}=="1" ATTRS{local_cpulist}=="0-7" ATTRS{vendor}=="0x8086" ATTRS{subsystem_device}=="0x054c" ATTRS{d3cold_allowed}=="0" looking at parent device '/devices/pci0000:00': KERNELS=="pci0000:00" SUBSYSTEMS=="" DRIVERS==""
Mit einem USB 2.0 Gerät hatte ich weniger Probleme.
Frage: Es ist doch erlaubt die verschiedenen Attribute sich für die Regel zu mixen oder?
Und noch eine Frage, wie kann ich den Einhängepunkt (Devicename) explizit an das Script übergeben?
-
Man darf die Eigenschaften von einem Gerät und nur einem Eltern-Gerät verwenden.
Für das aktuelle Gerät, kannst du "%E{DEVNAME}" in "RUN" verwenden.
-
lagalopex schrieb:
Man darf die Eigenschaften von einem Gerät und nur einem Eltern-Gerät verwenden.
Für das aktuelle Gerät, kannst du "%E{DEVNAME}" in "RUN" verwenden.
Vielen Dank hab das nicht gewusst, dass mit den Eltern-Gerät...
Und das mit dem "%E{DEVNAME}" verbirgt sich aber nicht der von mir gewünschte Gerätename.
Wenn ich das an das Script übergebe, erhalte ich folgende Ausgabe.
JetFlash inserted on /dev/bus/usb/002/002
Ich dachte eher an sowas wie /dev/sdX, oder kann man das damit ermitteln?