summaryrefslogtreecommitdiff
path: root/passwort-tresor.in
diff options
context:
space:
mode:
Diffstat (limited to 'passwort-tresor.in')
-rw-r--r--passwort-tresor.in48
1 files changed, 27 insertions, 21 deletions
diff --git a/passwort-tresor.in b/passwort-tresor.in
index 78988ff..40826c3 100644
--- a/passwort-tresor.in
+++ b/passwort-tresor.in
@@ -2,12 +2,13 @@
beenden () {
[ -n "${tmpDir}" ] && rm -rf "${tmpDir}"
+ [ -n "$1" ] && [ "$1" -ne 0 ] && >&2 echo 'Ich beende.'
exit $1
}
beiFehlerBeenden () {
err=$?
- if [ ${err} -ne 0 ]
+ if [ ${err} -ne 0 ] && [ ${blind} -lt $1 ]
then
if [ -e "${tmpDir}/fehlermeldungen" ]
then
@@ -23,8 +24,10 @@ verwendung()
>&2 echo 'Skript zum verschlüsselten Speichern von Passwörtern und anderem'
>&2 echo ''
>&2 echo 'Verwendung:'
- >&2 echo " $(basename "$0") [ -g | --grep ] [ ( -d | --datei $datei ) ( -s | --summe $datei ) ]"
+ >&2 echo " $(basename "$0") [ -b | --blind $blindheit ] [ -g | --grep ] [ ( -d | --datei \$datei ) ( -s | --summe \$datei ) ]"
>&2 echo ''
+ >&2 echo ' -b|--blind $blindheit:'
+ >&2 echo ' Schwere der Fehler, die ignoriert werden (0,1,2,3)'
>&2 echo ' -d|--datei $datei:'
>&2 echo ' verschlüsselte Datei'
>&2 echo ' -g|--grep:'
@@ -36,7 +39,8 @@ verwendung()
}
eval set -- "$(
- getopt -o d:gs: \
+ getopt -o b:d:gs: \
+ --long blind: \
--long datei: \
--long grep \
--long summe: \
@@ -47,12 +51,18 @@ eval set -- "$(
args=("$@")
greppw=false
+blind=0
. #ETCDIR#/passwort-tresor.konf
while true
do
case $1 in
+ -b|--blind)
+ [ "${blind}" -ne 0 ] && verwendung
+ shift
+ blind="$1"
+ ;;
-d|--datei)
[ -n "${datei}" ] && verwendung
shift
@@ -71,7 +81,7 @@ do
break
;;
*)
- >&2 echo "FEHLER: Verstehe Option \"$1\" doch nicht! Ich beende."
+ >&2 echo "FEHLER: Verstehe Option \"$1\" doch nicht!"
beenden 1
esac
shift
@@ -84,14 +94,12 @@ then
do
>&2 echo "'${!i}'"
done
- >&2 echo 'Ich beende.'
verwendung
fi
if [ -n "${summe}" ] && [ -z "${datei}" ]
then
>&2 echo 'Keine Datei zur Prüfsumme angegeben!'
- >&2 echo 'Ich beende.'
verwendung
fi
@@ -109,7 +117,6 @@ fi
if [[ ! "${datei}" = *".gpg" ]]
then
>&2 echo 'Datei endet nicht auf ".gpg"!'
- >&2 echo 'Ich beende.'
beenden 1
fi
@@ -118,37 +125,36 @@ ${greppw} && read -p 'suche nach: ' suche
tmpDir="$(mktemp -d)"
rsync "${datei}" "${tmpDir}/original"
-beiFehlerBeenden
+beiFehlerBeenden 0
rsync "${summe}" "${tmpDir}/summe"
-beiFehlerBeenden
+beiFehlerBeenden 2
cat "${tmpDir}/summe" \
| awk "{print \$1\" ${tmpDir}/original\"}" \
| sha512sum -c \
> "${tmpDir}/fehlermeldungen"
-beiFehlerBeenden
+beiFehlerBeenden 1
gpg --status-fd 1 -o "${tmpDir}/output" -d "${tmpDir}/original" \
2> "${tmpDir}/fehlermeldungen" \
> "${tmpDir}/status"
-beiFehlerBeenden
+beiFehlerBeenden 2
grep -q "VALIDSIG ${schluessel} \(.* \)\?${schluessel}\$" "${tmpDir}/status"
-beiFehlerBeenden
+beiFehlerBeenden 1
if ${greppw}
then
for suchStr in "${suche}" "${suche}.*:\$" "^${suche}.*:\$" "^${suche}:\$" ""
do
[ $(grep -c "${suchStr}" "${tmpDir}/output") -eq 1 ] && break
- fi
+ done
if [ -z "${suchStr}" ]
then
>&2 echo "'${suche}' ist nicht genau ein Mal vorhanden!"
- >&2 echo 'Ich beende.'
beenden 1
fi
output="$(grep -2 "${suchStr}" "${tmpDir}/output" | tail -n2)"
@@ -165,17 +171,17 @@ else
sha512sum "${tmpDir}/output" > "${tmpDir}/alteSumme"
${EDITOR:-nano} "${tmpDir}/output" || beenden $?
sha512sum -c "${tmpDir}/alteSumme" &> /dev/null && beenden 0
+ gpg -o "${tmpDir}/neu" -r "0x${schluessel}" -e -s "${tmpDir}/output" \
+ 2> "${tmpDir}/fehlermeldungen"
+ beiFehlerBeenden 3
sed "s|^\S\+ |$(
- sha512sum "${tmpDir}/output" | \
+ sha512sum "${tmpDir}/neu" | \
awk '{print $1}'
) |" -i "${tmpDir}/summe"
- gpg -o "${tmpDir}/original" -r "0x${schluessel}" -e "${tmpDir}/output" \
- 2> "${tmpDir}/fehlermeldungen"
- beiFehlerBeenden
- rsync "${tmpDir}/original" "${datei}"
- beiFehlerBeenden
+ rsync "${tmpDir}/neu" "${datei}"
+ beiFehlerBeenden 3
rsync "${tmpDir}/summe" "${summe}"
- beiFehlerBeenden
+ beiFehlerBeenden 1
fi
beenden 0