50 lines
1.2 KiB
Bash
50 lines
1.2 KiB
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
|
|
}
|
|
|
|
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 | xclip
|
|
echo "Username clipped for 4 seconds..."; sleep 4
|
|
lpass show $lp_item_id --password | xclip
|
|
echo "Password clipped"
|
|
notify-send "Lastpass CLI" "Password clipped"
|
|
rm .lp_extract
|
|
}
|