scripts/bashrc.d/lps.sh
2024-12-27 07:18:25 +01:00

59 lines
1.3 KiB
Bash

#!/bin/bash
# LASTPASS
lp_login=
color1='\e[31m'
color2='\e[32m'
color3='\e[34m'
color4='\e[33m'
if [ "$lp_login" = "" ]; then echo "Please edit lps.sh to set your Lastpass login."; fi
lp_check_login(){
lpass status | grep 'Logged in' > /dev/null
if [ $? != 0 ]; then lpass login $lp_login; fi
}
lp_color_alt(){
case "$color" in
"$color1") color=$color2;;
"$color2") color=$color3;;
"$color3") color=$color4;;
"$color4") color=$color1;;
esac
}
lp_clip(){
case "$XDG_SESSION_TYPE" in
wayland) wl-copy $1;;
x11) xclip $1;;
esac
}
lps() {
lp_check_login
lpass ls > .lp_extract
IFS_bak=$IFS
IFS=$'\n'
declare SEARCH=($(grep -i $1 .lp_extract))
lp_search_count=$(echo "${SEARCH[*]}" | wc -l )
lp_search_count=$((--lp_search_count))
color=$color1
for i in $( seq 0 $lp_search_count )
do
echo -e "$color$i) ${SEARCH[$i]}"
lp_color_alt
done
echo -e "\e[0m\n"
read -p "Item ? " lp_item
lp_item_id=$(echo ${SEARCH[$lp_item]} | awk -F' |]' '{printf $(NF-1)}')
lp_item_id=${lp_item_id#* }
lpass show $lp_item_id
read -p "Press enter to clip user/pass..."
lpass show $lp_item_id --username | lp_clip
echo "Username clipped for 4 seconds..."; sleep 4
lpass show $lp_item_id --password | lp_clip
echo "Password clipped"
notify-send "Lastpass CLI" "Password clipped"
rm .lp_extract
}