#!/usr/bin/env bash # Initialization supplies the real host sysfs and USB device paths. generate_usb() { local sys=$1 dev=$2 entry vendor product bus number node local -a nodes=() for entry in "$sys"/*; do [[ -r $entry/idVendor && -r $entry/idProduct ]] || continue read -r vendor < "$entry/idVendor" || continue read -r product < "$entry/idProduct" || continue [[ $vendor == 046d ]] || continue case $product in c222|c225|c227|c22b|c22d|c22e) ;; *) continue ;; esac [[ -r $entry/busnum && -r $entry/devnum ]] || continue read -r bus < "$entry/busnum" || continue read -r number < "$entry/devnum" || continue [[ $bus =~ ^[0-9]{1,3}$ && $number =~ ^[0-9]{1,3}$ ]] || continue printf -v node '%s/%03d/%03d' "$dev" "$((10#$bus))" "$((10#$number))" [[ -c $node ]] || continue nodes+=("$node") done printf 'services:\n dev:\n' if ((${#nodes[@]})); then printf ' devices:\n' for node in "${nodes[@]}"; do printf ' - "%s:%s:rw"\n' "$node" "$node" done else printf ' devices: []\n' fi }