#!/bin/bash if [[ "$(uname)" != "Linux" ]]; then echo "This only works on Linux" exit 1 fi if [[ "$UID" -ne 0 ]]; then echo "This must be run as root" exit 1 fi out_dev="" if [[ "$1" == "bind" ]]; then out_dev="/sys/bus/usb/drivers/usbhid/bind" elif [[ "$1" == "unbind" ]]; then out_dev="/sys/bus/usb/drivers/usbhid/unbind" else echo "usage: $0 bind|unbind" exit 1 fi for dev in /sys/bus/usb/devices/*; do if [[ -f "$dev"/product ]]; then if [[ "$(cat "$dev"/product)" =~ ^Yubikey ]]; then for i in "$dev"/*; do dev_id=$(basename $i) if [[ "$dev_id" =~ ^[0-9:\.-]+ ]]; then echo -n $dev_id > $out_dev fi done fi fi done