summaryrefslogtreecommitdiff
path: root/pwgrep.sh
diff options
context:
space:
mode:
Diffstat (limited to 'pwgrep.sh')
-rwxr-xr-xpwgrep.sh74
1 files changed, 49 insertions, 25 deletions
diff --git a/pwgrep.sh b/pwgrep.sh
index 749757d..8df11fd 100755
--- a/pwgrep.sh
+++ b/pwgrep.sh
@@ -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
}