Por que essa regra do Udev é executada apenas uma vez?

2

Eu quero configurar uma regra do udev para ser executada toda vez que eu conectar uma unidade USB que conectará a unidade USB para conectar a uma VM no VirtualBox. A regra do udev funciona para conectar uma unidade USB a uma VM em execução, mas apenas uma vez por inicialização. Alguém por favor me ajude. Eu tenho o em /etc/udev/rules.d/10-usbmount.rules :

 KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/usr/bin/vbox-automount-usb"

E isso em /usr/bin/vbox-automount-usb :

#!/bin/bash
set 'lsusb -d ${ID_VENDOR}:${ID_MODEL}| sed 's/:.*//g''
while [ ! -z "" ]; do
  case  in
       Bus) shift
       busdevice=""
       ;;
       Device) shift
       busdevice=${busdevice}"/"
       ;;
  esac
  shift
done
if [ ! -z "$busdevice" ]; then
  address=$(VBoxManage list usbhost | grep "Address:" | grep $bus device | sed -e 's/Address://' -e 's/^[ \t]*//')
  if [ ! -z "$address" ]; then
       su - guestos -c "VBoxManage controlvm guestos_0001 usbattach $address"
  fi
fi

EDITAR: Eu posso fazer o /etc/udev/rules.d/10-usbmount.rules funcionar também alterando-o para:

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", RUN+="/usr/bin/vbox-automount-usb"

Mas ainda monta um USB no VirtualBox pela primeira vez

EDITAR: A mesma coisa AINDA acontece quando se usa

su - guestos -c "VBoxManage controlvm guestos_0001 usbattach 'VBoxManage list usbhost | grep "Address:" | grep $bus device | sed -e 's/Address://' -e 's/^[ \t]*//''"

Para /usr/bin/vbox-automount-usb

    
por Crutchcorn 23.04.2015 / 21:33

0 respostas