Sometime desired that USB stick connected to physical host will be exposed to running on it guest VM (QEMU/KVM).
Let's see how to achieve this using UDEV
First, create script that will do real work /usr/local/sbin/attach_usb.sh. It is small, I'll post it inline:
#!/bin/bash
# /usr/local/sbin/attach_usb.sh
# This script will attach inserted USB device to first running VM
VM=$(virsh list|awk '/running/{print $2;exit}')
[ 'x'"$VM" = 'x' ] && exit
ACTION=$1 ; vID=$2 ; pID=$3
[ 'x'"$pID" = 'x' ] && exit
CONF=$(mktemp)
cat > $CONF << EOFcat
<hostdev mode='subsystem' type='usb'>
<source>
<vendor id='0x$vID'/>
<product id='0x$pID'/>
</source>
</hostdev>
EOFcat
case $ACTION in 
"attach") virsh attach-device $VM $CONF --current ;;
"detach") virsh detach-device $VM $CONF --current ;;
esac
rm -f $CONF
Next, prepare rule itself, create /etc/udev/rules.d/86-usb2vm.rules file with content:
# /etc/udev/rules.d/86-usb2vm.rules
# pass-through USB device to first running VM:
SUBSYSTEM=="usb",ACTION=="add",RUN+="/usr/local/sbin/attach_usb.sh attach $attr{idVendor} $attr{idProduct}"
SUBSYSTEM=="usb",ACTION=="remove",RUN+="/usr/local/sbin/attach_usb.sh detach $attr{idVendor} $attr{idProduct}"
Reload udev, enjoy.