diff options
Diffstat (limited to 'grep-passwort.in')
-rw-r--r-- | grep-passwort.in | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/grep-passwort.in b/grep-passwort.in new file mode 100644 index 0000000..b0f638d --- /dev/null +++ b/grep-passwort.in @@ -0,0 +1,110 @@ +#!/bin/bash + +passstore_Verzeichnis=$( + readlink -f ~/.password-store +) + +Verwendung() +{ + >&2 echo 'Nach Passwort per Regex suchen.' + >&2 echo '' + >&2 printf 'Verwendung: %s [OPTIONS]\n' "$(basename "$0")" + >&2 echo \ +'#HELPTEXT# #' + >&2 echo '' + exit $1 +} + +eval set -- "$( + getopt -o h \ + --long help \ + --long version \ + -n "$(basename "$0")" \ + -- "$@" \ + || echo "Verwendung" +)" + +while true; do + case "$1" in + '-h'|'--help') + Verwendung 0 + ;; + '--version') + >&2 echo '#VERSION#' + exit 0 + ;; + '--') + shift + break + ;; + *) + >&2 printf 'FEHLER: Verstehe Option "%s" doch nicht!\n' "$1" + exit 1 + esac + shift +done + +if [ ! -d "${passstore_Verzeichnis}" ]; then + >&2 printf 'Verzeichnis "%s" existiert nicht - ist pass initialisiert?\n' "${passstore_Verzeichnis}" + exit 1 +fi + +if [ $# -ne 0 ]; then + >&2 printf 'FEHLER: Zu viele (%s) Argumente:\n' "$#" + >&2 printf '"%s"\n' "$@" + Verwendung 1 +fi + +count=0 +while [ ${count} -ne 1 ]; do + read -p 'suche nach: ' Suche + Ergebnisse='' + for Versuch in 'name:' 'iname:' 'name:*' 'iname:*' 'path:*' 'ipath:*'; do + if [ -n "${Ergebnisse}" ]; then + break + fi + Ergebnisse=$( + find "${passstore_Verzeichnis}" \ + -type f \ + -name '*.gpg' \ + -${Versuch%%:*} "${Versuch#*:}${Suche}${Versuch#*:}" \ + -printf '%P\n' + ) + done + if [ -z "${Ergebnisse}" ]; then + >&2 echo 'Ich habe nichts finden können.' + exit 1 + fi + count=$(printf '%s\n' "${Ergebnisse}" | wc -l) + if [ ${count} -ne 1 ]; then + printf 'Es gab %s Übereinstimmungen:\n' "${count}" + printf ' %s\n' ${Ergebnisse} + fi +done + +output=$( + pass show "${Ergebnisse%.gpg}" +) + +printf '%s\n' "${output}" \ +| sed ' + s/^Username: // + t + d +' \ +| xclip -i + +printf "." + +read dummy + +printf '%s\n' "${output}" \ +| head -n1 \ +| xclip -i + +printf "." + +read dummy + +echo '' \ +| xclip -i |