summaryrefslogtreecommitdiff
path: root/grep-passwort.in
diff options
context:
space:
mode:
Diffstat (limited to 'grep-passwort.in')
-rw-r--r--grep-passwort.in110
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