+# Interactive part:
+for key in $HOME/.ssh/id_dsa;do
+ [ -r "$key" ] || continue
+ # Do not: [ -n "$SSH_TTY" ] && continue
+ # as we may want foreign SSH keys too.
+
+ agenteval=/tmp/.$USER.ssh-agent.eval
+ if lockfile -1 -r 3 -l 10 -s 1 $agenteval.lock;then
+ test -f $agenteval -a -O $agenteval -a -G $agenteval &&
+ # ">/dev/null" to prevent: echo Agent pid 31074;
+ source $agenteval >/dev/null
+ if [ "ssh-agent" != "`(xargs -0 </proc/"$SSH_AGENT_PID"/cmdline sh -c 'echo "$0"') 2>/dev/null `" ];then
+ rm -f $agenteval
+ (test ! -e $agenteval && ssh-agent -s >$agenteval) || echo >&2 'Failing ssh-agent!'
+ # ">/dev/null" to prevent: echo Agent pid 31074;
+ source $agenteval >/dev/null
+ fi
+ rm -f $agenteval.lock
+ fi
+
+ # Prevent gdm(8) lockups on non-interactive consoles.
+ tty -s || continue
+ (ssh-add -l|grep -qw "$key") && continue
+ if lockfile -! -1 -r 0 $agenteval.input.lock 2>/dev/null;then
+ echo >&2 -n "Locking: $agenteval.input.lock ... "
+ lockfile -1 -r -1 $agenteval.input.lock
+ echo >&2 "locked"
+ fi
+ # Recheck identity existence after the lock acquire
+ if ssh-add -l|grep -qw "$key";then
+ echo >&2 "Identity $key already appended in the meantime."
+ else
+ # "2>/dev/null" to prevent: Identity added: .ssh/id_dsa (.ssh/id_dsa)
+ ssh-add "$key" 2>/dev/null
+ fi
+ rm -f $agenteval.input.lock
+ echo >&2 "$agenteval.input.lock unlocked."
+done
+unset agenteval
+