change how it works
This commit is contained in:
117
shell/sbean
117
shell/sbean
@@ -4,23 +4,23 @@ _help() {
|
|||||||
sbean: Spilling the beans, a keepassxc cli wrapper
|
sbean: Spilling the beans, a keepassxc cli wrapper
|
||||||
|
|
||||||
commands:
|
commands:
|
||||||
install apt install keepassxc
|
- apt install keepassxc:
|
||||||
db-create create database
|
install
|
||||||
--key Path-to-keyfile --db short-name --path Path-to-database.kdbx
|
- create database
|
||||||
Rest of the commands:
|
[db-file] [key-file] create
|
||||||
--db [name, defaults to first in config]
|
- list entries
|
||||||
db-ls list databases
|
[db-file] [key-file] ls
|
||||||
ls list entries
|
- add new entry, password through stdin, or interactive
|
||||||
add add new entry
|
[db-file] [key-file] add [entry-name] --user user-name
|
||||||
--entry entry-name --user user-name
|
- get user name
|
||||||
get-user returns username
|
[db-file] [key-file] get-user [entry-name]
|
||||||
--entry entry-name
|
- get password
|
||||||
get-password returns password
|
[db-file] [key-file] get-password [entry-name]
|
||||||
--entry entry-name
|
- open database using cli
|
||||||
open open database using cli
|
[db-file] [key-file] open
|
||||||
openx open database using keepassxc
|
- open database using keepassxc:
|
||||||
|
[db-file] [key-file] openx
|
||||||
|
|
||||||
look for ~/.config/sbean/rc for using multiple db
|
|
||||||
"
|
"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
@@ -43,115 +43,64 @@ _install() {
|
|||||||
_create() {
|
_create() {
|
||||||
echo Creating new database
|
echo Creating new database
|
||||||
set -e
|
set -e
|
||||||
if [[ ! -e "$CONFIG" ]]; then
|
if [[ -z "$DBKEY" ]]; then _error "key required"; fi
|
||||||
mkdir -p $( dirname "$CONFIG" )
|
if [[ -z "$DBPATH" ]]; then _error "db required"; fi
|
||||||
fi
|
|
||||||
if [[ -z "$DB" ]]; then _error "--db required"; fi
|
|
||||||
if [[ -z "$KEY" ]]; then _error "--key required"; fi
|
|
||||||
if [[ -z "$DBPATH" ]]; then _error "--path required"; fi
|
|
||||||
DB=$( echo $DB | tr -c -d [a-zA-Z0-9-] )
|
|
||||||
if [[ -e "$DBPATH" ]]; then _error "File $DBPATH already exists"; fi
|
if [[ -e "$DBPATH" ]]; then _error "File $DBPATH already exists"; fi
|
||||||
if [[ -e "$KEY" ]]; then _error "File $KEY already exists"; fi
|
if [[ -e "$DBKEY" ]]; then _error "File $DBKEY already exists"; fi
|
||||||
EXISTINGDB=$( _get_config DB $DB )
|
keepassxc-cli db-create -k "$DBKEY" "$DBPATH"
|
||||||
if [[ -n "$EXISTINGDB" ]]; then _error "DB $DB already exists"; fi
|
|
||||||
KEY=$( readlink -m "$KEY" )
|
|
||||||
DBPATH=$( readlink -m "$DBPATH" )
|
|
||||||
keepassxc-cli db-create -k "$KEY" "$DBPATH"
|
|
||||||
_set_config DB "$DB" "$DBPATH"
|
|
||||||
_set_config KEY "$DB" "$KEY"
|
|
||||||
echo Created DB $DB >/dev/stderr
|
|
||||||
}
|
|
||||||
|
|
||||||
_db_ls() {
|
|
||||||
grep ^DB_ "$CONFIG" | sed 's/DB_\([^=]\+\)=\(.*\)/\1: \2/'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_ls() {
|
_ls() {
|
||||||
_set_default_db
|
|
||||||
echo DB: $DB >/dev/stderr
|
|
||||||
keepassxc-cli ls -k "$DBKEY" --no-password -R -f "$DBPATH"
|
keepassxc-cli ls -k "$DBKEY" --no-password -R -f "$DBPATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
_add() {
|
_add() {
|
||||||
_set_default_db
|
if [[ -z "$ENTRY" ]]; then _error "entry required"; fi
|
||||||
if [[ -z "$ENTRY" ]]; then _error "--entry required"; fi
|
|
||||||
if [[ -z "$ENTRY_USER" ]]; then _error "--user required"; fi
|
|
||||||
|
|
||||||
echo DB: $DB >/dev/stderr
|
|
||||||
keepassxc-cli add -k "$DBKEY" --no-password "$DBPATH" -p -u "$ENTRY_USER" "$ENTRY"
|
keepassxc-cli add -k "$DBKEY" --no-password "$DBPATH" -p -u "$ENTRY_USER" "$ENTRY"
|
||||||
}
|
}
|
||||||
|
|
||||||
_get_user() {
|
_get_user() {
|
||||||
_set_default_db
|
if [[ -z "$ENTRY" ]]; then _error "entry required"; fi
|
||||||
keepassxc-cli show -k "$DBKEY" --no-password -a username "$DBPATH" "$ENTRY"
|
keepassxc-cli show -k "$DBKEY" --no-password -a username "$DBPATH" "$ENTRY"
|
||||||
}
|
}
|
||||||
|
|
||||||
_get_pass() {
|
_get_pass() {
|
||||||
_set_default_db
|
if [[ -z "$ENTRY" ]]; then _error "entry required"; fi
|
||||||
keepassxc-cli show -k "$DBKEY" --no-password -a password "$DBPATH" "$ENTRY"
|
keepassxc-cli show -k "$DBKEY" --no-password -a password "$DBPATH" "$ENTRY"
|
||||||
}
|
}
|
||||||
|
|
||||||
_open() {
|
_open() {
|
||||||
_set_default_db
|
|
||||||
echo DB: $DB
|
|
||||||
keepassxc-cli open -k "$DBKEY" --no-password "$DBPATH"
|
keepassxc-cli open -k "$DBKEY" --no-password "$DBPATH"
|
||||||
}
|
}
|
||||||
_openx() {
|
_openx() {
|
||||||
_set_default_db
|
|
||||||
echo DB: $DB
|
|
||||||
keepassxc --keyfile "$DBKEY" "$DBPATH"
|
keepassxc --keyfile "$DBKEY" "$DBPATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
_set_config() {
|
|
||||||
echo "$1"_"$2"=$3 >> "$CONFIG"
|
|
||||||
}
|
|
||||||
|
|
||||||
_set_default_db() {
|
|
||||||
if [[ -z "$DB" ]]; then
|
|
||||||
DB=$( grep ^DB_ "$CONFIG" | sed 's/DB_\([^=]\+\)=\(.*\)/\1/' | head -n 1 )
|
|
||||||
fi
|
|
||||||
DBPATH=$( _get_config DB "$DB" )
|
|
||||||
DBKEY=$( _get_config KEY "$DB" )
|
|
||||||
}
|
|
||||||
|
|
||||||
_get_config() {
|
|
||||||
if [[ ! -e "$CONFIG" ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
grep ^"$1"_"$2"= "$CONFIG" | sed 's/[^=]*=//'
|
|
||||||
}
|
|
||||||
|
|
||||||
CONFIG=$HOME/.config/sbean/rc
|
|
||||||
for (( i=1; i<=$#; i++ )); do
|
for (( i=1; i<=$#; i++ )); do
|
||||||
value=${!i}
|
value=${!i}
|
||||||
j=$(( i + 1 ))
|
j=$(( i + 1 ))
|
||||||
[[ "${value}" = "-"* ]] && {
|
[[ "${value}" = "-"* ]] && {
|
||||||
[[ "$value" =~ -h ]] && { _help; }
|
[[ "$value" =~ -h ]] && { _help; }
|
||||||
[[ "$value" =~ --help ]] && { _help; }
|
[[ "$value" =~ --help ]] && { _help; }
|
||||||
[[ "$value" =~ --db ]] && { DB="${!j}"; }
|
|
||||||
[[ "$value" =~ --key ]] && { KEY="${!j}"; }
|
|
||||||
[[ "$value" =~ --path ]] && { DBPATH="${!j}"; }
|
|
||||||
[[ "$value" =~ --entry ]] && { ENTRY="${!j}"; }
|
|
||||||
[[ "$value" =~ --user ]] && { ENTRY_USER="${!j}"; }
|
[[ "$value" =~ --user ]] && { ENTRY_USER="${!j}"; }
|
||||||
i=$j
|
i=$j
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if [[ -z "$CMD" ]]; then
|
if [[ -z "$DBPATH" ]]; then DBPATH="${!i}"; continue; fi
|
||||||
CMD="$value"
|
if [[ -z "$DBKEY" ]]; then DBKEY="${!i}"; continue; fi
|
||||||
else
|
if [[ -z "$CMD" ]]; then CMD="${!i}"; continue; fi
|
||||||
_error "Only one command allowed"
|
if [[ -z "$ENTRY" ]]; then ENTRY="${!i}"; continue; fi
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
which keepassxc-cli &> /dev/null || {
|
if [[ ! "$CMD" = install ]]; then
|
||||||
echo Missing keepassxc-cli
|
which keepassxc-cli &> /dev/null || {
|
||||||
|
echo Missing keepassxc-cli >/dev/stderr
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
case $CMD in
|
case $CMD in
|
||||||
install) _install;;
|
install) _install;;
|
||||||
db-create) _create;;
|
create) _create;;
|
||||||
db-ls) _db_ls;;
|
|
||||||
ls) _ls;;
|
ls) _ls;;
|
||||||
add) _add;;
|
add) _add;;
|
||||||
get-user) _get_user;;
|
get-user) _get_user;;
|
||||||
|
|||||||
Reference in New Issue
Block a user