udev regra executar 2 vezes

3

Eu escrevi uma regra do udev assim:

SUBSYSTEM=="usb", ACTION=="add", RUN+="//root/usbmon/usb add %b"
SUBSYSTEM=="usb", ACTION=="remove", RUN+="//root/usbmon/usb remove %b"

agora este script usb envia e-mails sempre que o USB é anexado e removido.

mas o problema é que todas as vezes envia 2 emails. isso significa que a regra está sendo executada 2 vezes. isso é o que eu recebo no log

Apr 26 14:52:00 box2 sendEmail[3374]: Email was sent successfully!
USB Added: Email sent to [email protected] Using Udev Rule at 04-26-14-52-00. 
Apr 26 14:52:00 box2 sendEmail[3394]: Email was sent successfully!
USB Added: Email sent to [email protected] Using Udev Rule at 04-26-14-52-00. 

Eu não sei por que ele está sendo executado duas vezes e como posso pará-lo para funcionar uma vez? Verifiquei que o problema está no final do udev, mas não sei como corrigi-lo. esta é a saída do monitor do udev quando o usb está conectado:

KERNEL[1335803018.283341] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4 (usb)
KERNEL[1335803018.284456] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0 (usb)
KERNEL[1335803018.284835] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6 (scsi)
KERNEL[1335803018.284863] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/scsi_host/host6 (scsi_host)
KERNEL[1335803023.524167] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0 (scsi)
KERNEL[1335803023.524735] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0 (scsi)
KERNEL[1335803023.525043] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/scsi_disk/6:0:0:0 (scsi_disk)
KERNEL[1335803023.525154] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/scsi_device/6:0:0:0 (scsi_device)
KERNEL[1335803023.525505] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/scsi_generic/sg6 (scsi_generic)
KERNEL[1335803023.525792] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/bsg/6:0:0:0 (bsg)
KERNEL[1335803023.526534] add      /devices/virtual/bdi/8:80 (bdi)
UDEV  [1335803023.526895] add      /devices/virtual/bdi/8:80 (bdi)
KERNEL[1335803023.543043] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/block/sdf (block)
KERNEL[1335803023.543166] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/block/sdf/sdf1 (block)
UDEV  [1335803028.541785] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4 (usb)
UDEV  [1335803038.850181] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0 (usb)
UDEV  [1335803038.850423] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6 (scsi)
UDEV  [1335803038.850541] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0 (scsi)
UDEV  [1335803038.850568] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/scsi_host/host6 (scsi_host)
UDEV  [1335803038.851736] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0 (scsi)
UDEV  [1335803038.851912] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/scsi_disk/6:0:0:0 (scsi_disk)
UDEV  [1335803038.861401] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/scsi_device/6:0:0:0 (scsi_device)
UDEV  [1335803038.862757] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/bsg/6:0:0:0 (bsg)
UDEV  [1335803038.863880] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/scsi_generic/sg6 (scsi_generic)
UDEV  [1335803039.002743] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/block/sdf (block)
UDEV  [1335803039.072845] add      /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/host6/target6:0:0/6:0:0:0/block/sdf/sdf1 (block)

Agora, a saída acima mostra claramente que o udev está conectando o dispositivo novamente após 10 segundos e esse é o momento em que recebo o e-mail novamente (após 10 segundos). também quando o script não é executável, então eu recebo a mensagem seguinte 2 vezes no arquivo de log:

Apr 30 10:22:37 box2 udevd-work[1990]: exec of program '/root/usbmon/usb' failed
Apr 30 10:22:37 box2 udevd-work[1991]: exec of program '/root/usbmon/usb' failed

agora quero saber que preciso alterar essas configurações para que o udev seja executado uma vez. Eu verifiquei a mesma coisa em 2 servidores. CentOS e Ubuntu.

    
por Kashif 30.04.2012 / 20:06

2 respostas

4

O problema foi resolvido adicionando ENV{DEVTYPE}=="usb_device" em uma regra.

    
por 01.05.2012 / 21:03
1

Eu suponho que sua regra corresponda ao dispositivo /dev/sdf , mas também à primeira partição /dev/sdf1 , para que seja acionada duas vezes.

Se você quiser corresponder apenas a /dev/sdf1 , pode tentar algo como KERNEL=="sd*1" .

    
por 30.04.2012 / 20:45

Tags