diff options
Diffstat (limited to 'pwgrep.sh')
| -rwxr-xr-x | pwgrep.sh | 74 |
1 files changed, 49 insertions, 25 deletions
@@ -1,6 +1,6 @@ #!/bin/bash -# pwgrep v0.8-pre-2 (c) 2009, 2010 by Paul Buetow +# pwgrep v0.8-pre-4 (c) 2009, 2010 by Paul Buetow # pwgrep helps you to manage all your passwords using GnuGP # for encryption and a versioning system (subversion by default) # for keeping track all changes of your password database. In @@ -127,29 +127,37 @@ function setwipecmd () { function pwgrep () { search=$1 - info Searching for $search - - gpg --decrypt $PWGREPDB | $AWK -v search="$search" ' - BEGIN { - flag=0 - IGNORECASE=1 - } - !/^\t/ { - if (!flag && $0 ~ search) { - flag=1 - print $0 - } else if (flag && $0 ~ search) { - print $0 - } else if (flag) { - flag=0 - } - } /^\t/ && flag { - print $0 - }' + + if [ -z "$ALL" ]; then + dbs=$PWGREPDB + else + dbs=$(_pwdbls | sed 's/$/.gpg/') + fi + + for db in $dbs; do + info Searching for $search in $db + gpg --use-agent --decrypt $db | $AWK -v search="$search" ' + BEGIN { + flag=0 + IGNORECASE=1 + } + !/^\t/ { + if (!flag && $0 ~ search) { + flag=1 + print $0 + } else if (flag && $0 ~ search) { + print $0 + } else if (flag) { + flag=0 + } + } /^\t/ && flag { + print $0 + }' + done } function pwupdate () { - if [ -z $NOVERSIONING ]; then + if [ -z "$NOVERSIONING" ]; then info Updating repository $VERSIONUPDATE 2>&1 >/dev/null fi @@ -164,12 +172,16 @@ function pwedit () { gpg --output .$PWGREPDB -e -r $GPGKEYID .database && \ $WIPE .database && \ mv .$PWGREPDB $PWGREPDB && \ - [ -z $NOVERSIONING ] && $VERSIONCOMMIT + [ -z "$NOVERSIONING" ] && $VERSIONCOMMIT +} + +function _pwdbls () { + ls *.gpg | sed 's/\.gpg$//' } function pwdbls () { echo Available Databases: - ls *.gpg | sed 's/\.gpg$//' + _pwdbls echo Current database: $PWGREPDB } @@ -207,7 +219,7 @@ function pwfadd () { gpg --output $PWFILEDIREXT/${outfile}.gpg -e -r $GPGKEYID $srcfile && \ - if [ -z $NOVERSIONING ]; then + if [ -z "$NOVERSIONING" ]; then $VERSIONADD $PWFILEDIREXT/${outfile}.gpg && $VERSIONCOMMIT fi } @@ -219,7 +231,7 @@ function pwfdel () { [ ! -e $PWFILEWORKDIR ] && error $PWFILEWORKDIR does not exist [ -z $name ] && error Missing argument - if [ -z $NOVERSIONING ]; then + if [ -z "$NOVERSIONING" ]; then # Wipe even encrypted file securely $WIPE $PWFILEDIREXT/${name}.gpg && \ touch $PWFILEDIREXT/${name}.gpg && $VERSIONCOMMIT && \ @@ -250,6 +262,7 @@ cat <<END Where OPTS are: -o - Offline mode -d <DB NAME> - Using a specific DB + -a - Grepping all available DBs at once END } @@ -283,6 +296,17 @@ function set_opts () { PWGREPDB=$PWGREPDB.gpg set_opts ;; + -a*) + # All DBs at once + which gpg-agent + if [ $? == "0" ]; then + ALL=1 + ARGS=${ARGS[@]:2} + set_opts + else + error You need gpg-agent installed + fi + ;; *) esac } |
