summaryrefslogtreecommitdiff
path: root/bin/manage-yubikey.sh
blob: ec2c28ac971f274832f22728b3ea1b4a8c568259 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/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