53 lines
895 B
Bash
Executable file
53 lines
895 B
Bash
Executable file
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
copy_uname_and_passwd () {
|
|
|
|
# Print the name of the selected login
|
|
|
|
echo "Name: $(printf "%s" "$1" | jq -r ".name")"
|
|
|
|
echo "> Copying Username"
|
|
|
|
# Copy the username to the clipboard
|
|
|
|
printf "%s" "$1" | jq -r ".login.username" | xclip
|
|
|
|
echo "> Press any key to copy password..."
|
|
|
|
# Wait for user input before coping the password
|
|
|
|
read
|
|
|
|
echo "> Copying Password"
|
|
|
|
# Copy the password to the clipboard
|
|
|
|
printf "%s" "$1" | jq -r ".login.password" | xclip
|
|
|
|
}
|
|
|
|
|
|
|
|
# Search for passwords using the search term
|
|
|
|
logins="$(bw list items --search $1)"
|
|
|
|
|
|
if [ $(printf "%s" "$logins" | jq ". | length") -eq 1 ]
|
|
|
|
then
|
|
|
|
login="$(printf "%s" "$logins" | jq ".[0]")"
|
|
|
|
else
|
|
|
|
name="$(printf "%s" "$logins" | jq -r ".[].name" | fzf --reverse)"
|
|
|
|
login="$(printf "%s" "$logins" | jq ".[] | select(.name == \"$name\")")"
|
|
|
|
fi
|
|
|
|
|
|
copy_uname_and_passwd $login
|
|
|