#!/usr/bin/env bash function vid_pid_model_list() { cat </dev/null >/dev/null) && { echo "virtualbox" return } (dmesg -t | grep -ie '^DMI:\s.*vmware.*' 2>/dev/null >/dev/null) && { echo "vmware" return } echo "-" return } check_os_version() { local has_lsb=$(which lsb_release >/dev/null 2>/dev/null && echo "yes" || echo "no") if [ "$has_lsb" != "yes" ]; then echo "Warning: Please install 'lsb-release' package to detect OS version." return fi os_name=$(lsb_release -s --id) os_ver=$(lsb_release -s --release --codename | tr "\n" " ") os_vm=$(get_vm_env) printf "| OS distro | $os_name |\n" printf "| OS version | $os_ver |\n" printf "| VM | $os_vm |\n" printf "\n### lsb_release \n\n" printf "\`\`\`\n" lsb_release -a 2>/dev/null printf "\`\`\`\n" } check_env() { printf "\n## OS Environment\n\n" printf "| | |\n" printf "| -- | -- |\n" printf "| Run as user | $(whoami) |\n" printf "| ARCH | $(uname -m) |\n" printf "| Kernel version | $(uname -a) |\n" } function check_usbdevice() { local device_path="$1" check_usbdevice_model $device_path >/dev/null || return local idvp="$(usbdev_get_vid_pid $device_path)" printf "\n## Device %s\n\n" "$idvp" printf "| | |\n" printf "| -- | -- |\n" printf "| %s | %s |\n" "Device path" "$device_path" check_usbdevice_model $device_path check_usbdevice_usb_ver $device_path check_usbdevice_usb_drv $device_path check_usbdevice_usb_iw $device_path printf "\n" } function main() { local dpath="/sys/bus/usb/devices" printf "# ALFA Wireless USB Checking Tool\n\n" printf "Date: $(date --iso-8601=s)\n" check_env check_os_version for item in $(find $dpath -maxdepth 1 -type l); do rpath=$(readlink -f $item) check_usbdevice $rpath done } (main $@)