]> git.rmz.io Git - dotfiles.git/blob - bin/reset-usb
lazyvim: absorb lualine.pretty_path
[dotfiles.git] / bin / reset-usb
1 #!/usr/bin/env bash
2
3 version="0.1"
4
5 function usage()
6 {
7 echo "Usage : $0 [options] [<idVendor>:]<idProduct>
8
9 Reset usb device identified by idVendor:idProduct.
10
11 Options:
12 -h,--help Display this message
13 -v,--version Display script version"
14 }
15
16 function check_ids()
17 {
18 local syspath=$1
19 [[ -n $idVendor && "$idVendor" != $(cat $syspath/idVendor 2>/dev/null) ]] && return 1
20 [[ -n $idProduct && "$idProduct" != $(cat $syspath/idProduct 2>/dev/null) ]] && return 1
21 return 0
22 }
23
24 function main()
25 {
26 for syspath in /sys/bus/usb/devices/*; do
27 if ! check_ids $syspath; then
28 continue
29 fi
30
31 echo "Resetting '$syspath'"
32 echo 0 | sudo tee $syspath/authorized >/dev/null
33 echo 1 | sudo tee $syspath/authorized >/dev/null
34 done
35 }
36
37 # Parse arguments
38 declare -a args
39 while [[ $# -gt 0 ]]; do
40 opt="$1"
41
42 case $opt in
43 -h|--help) usage; exit 0 ;;
44 -v|--version) echo "$0 -- Version $version"; exit 0 ;;
45 -* )
46 echo -e "\n Option does not exist : $opt\n"
47 usage; exit 1 ;;
48
49 *) args+=("$opt"); shift ;;
50 esac
51 done
52
53 if [[ ${#args[@]} != 1 ]]; then
54 usage
55 exit 1
56 fi
57
58 if [[ ${args[0]} =~ ([^:]+):([^:]+) ]]; then
59 idVendor=${BASH_REMATCH[1]}
60 idProduct=${BASH_REMATCH[2]}
61 else
62 idProduct=${args[0]}
63 fi
64
65 sudo -v
66 main