From 3feef411b5486ffdb5384387db94ea3664117933 Mon Sep 17 00:00:00 2001 Message-Id: <3feef411b5486ffdb5384387db94ea3664117933.1717056085.git.mdw@distorted.org.uk> From: Mark Wooding Date: Sat, 5 Nov 2016 21:28:22 +0000 Subject: [PATCH] bin/start-ssh-agent: Search for agents in some more places. Organization: Straylight/Edgeware From: Mark Wooding --- bin/start-ssh-agent | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/bin/start-ssh-agent b/bin/start-ssh-agent index afcfc72..bfb2608 100755 --- a/bin/start-ssh-agent +++ b/bin/start-ssh-agent @@ -31,20 +31,35 @@ esac ## Some useful variables. hostname=${HOST-$(hostname)} -user=${USER-${LOGNAME-$(id -un)}} +user=${USER-${LOGNAME-$(id -un)}} uid=${UID-$(id -u)} dir=$TMPDIR/.ssh-agent.$hostname.$user socket=$dir/sock; pid=$dir/pid export SSH_AUTH_SOCK -### Should I start a new agent? -case "$force,$SSH_AUTH_SOCK" in - t,* | nil,) - foundp=nil - ;; - *) - foundp=t - set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e - [ $rc -ge 2 ] && foundp=nil +## Should I start a new agent? +foundp=nil +case $force in + nil) + case ${SSH_AUTH_SOCK+t} in + t) + set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e + if [ $rc -lt 2 ]; then foundp=t; fi + ;; + esac + case $foundp in + t) ;; + *) + for i in \ + "$HOME/.cache/keyring-"*"/ssh" \ + "/run/user/$uid/keyring/ssh" \ + "$socket" + do + SSH_AUTH_SOCK=$i + set +e; ssh-add -l >/dev/null 2>&1; rc=$?; set -e + if [ $rc -lt 2 ]; then foundp=t; break; fi + done + ;; + esac ;; esac -- [mdw]