#!/usr/bin/env bash while getopts "on:" o; do case "${o}" in o) stdout=1;; n) caller="${OPTARG}" ;; *) exec ykman oath accounts list ;; esac done shift $((OPTIND-1)) if [ $# -lt 1 ]; then exec ykman oath accounts list fi if [ -n "$caller" ]; then notif="$(notify-send -p "Touch your Yubikey" "$caller is requesting otp for $1")" fi ykman oath accounts code -s "$1" 2>&1 | while read -r x; do if grep -Pqw '[0-9]{6}' <<< "$x"; then if [ -z "$stdout" ]; then echo "$x" | tee >(xclip -i) xdotool type "$x" else echo "$x" fi fi if [ -z "$stdout" ]; then notify-send "$x"; fi done if [ -n "$notif" ]; then notify-send -r "$notif" -t 1000 "Touch your Yubikey" "otp generated for $caller" fi