diff options
Diffstat (limited to 'zsh')
| -rw-r--r-- | zsh/functions/op-ssh-add | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/zsh/functions/op-ssh-add b/zsh/functions/op-ssh-add index 646b7f7..90cff9a 100644 --- a/zsh/functions/op-ssh-add +++ b/zsh/functions/op-ssh-add @@ -34,13 +34,22 @@ local session=$(op signin --raw) if [[ -z ${session} ]]; then return 1 fi + zmodload zsh/zpty zpty ssh $(which -p ssh-add) ${prv} -zpty -w ssh $(op list items --session ${session} --tags SSH \ + +_cleanup() { + zpty -d ssh + op signout --session $1 + trap - + unfunction _cleanup +} +trap "_cleanup ${session}" EXIT HUP INT TERM + +zpty -w ssh $(trap - + op list items --session ${session} --tags SSH \ | op get item \ --fields fingerprint,password \ --session ${session} - \ | jq -jr "select(.fingerprint == \"${fp}\") | .password") zpty -r ssh -zpty -d ssh -op signout --session ${session} |
