mirror of
https://github.com/frebib/dotfiles.git
synced 2024-06-14 12:57:23 +00:00
43 lines
930 B
Plaintext
43 lines
930 B
Plaintext
|
#!/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
|