e16 settings.
[profile.git] / .profile.d / ssh.bashrc
1 # $Id$
2
3 SOCKET=~/.ssh/agent
4
5 function get_agent_pid() {
6   ps waux | grep -- ^$USER\ .\*ssh-agent\ -a\ .\*\ -s | grep -v grep | awk '{ print $2 }' | head -n 1
7 }
8
9 if [ ! -z "$SSH_CLIENT" ]; then
10   # Set display if we aren't already forwarding X11
11   if [ "$DISPLAY" = "" ]; then
12     export DISPLAY="$(echo $SSH_CLIENT | cut -s -d ' ' -f 1):0"
13   fi
14 fi
15
16 # Try to hook up with already running ssh-agent.
17 if [ $UID -gt 0 ]; then
18   # Not all OSes support ``ps -wu''.
19   RUNNING_AGENT="$(get_agent_pid)"
20
21   # Has the socket gone away?
22   if [ ! -z "$RUNNING_AGENT" -a ! -S "$SOCKET" ]; then
23     if kill $RUNNING_AGENT; then
24       RUNNING_AGENT="$(get_agent_pid)"
25     else
26       echo >&2 "$SOCKET has gone away but agent is running as PID $RUNNING_AGENT."
27     fi
28   fi
29
30   if [ -z "$SSH_AGENT_PID" -o ! "$SSH_AGENT_PID" = "$RUNNING_AGENT" ]; then
31     export SSH_AGENT_PID="$RUNNING_AGENT"
32     if [ "$SSH_AGENT_PID" = "" ]; then
33       unset SSH_AGENT_PID
34       unset SSH_AUTH_SOCK
35       # Start ssh-agent up then.
36       rm -f "$SOCKET"
37       eval $(/usr/bin/ssh-agent -a "$SOCKET" -s)
38       trap "kill $SSH_AGENT_PID" 0
39       ssh-add
40     else
41       export SSH_AUTH_SOCK="$SOCKET"
42     fi
43   fi
44   unset RUNNING_AGENT
45 fi
46
47 unset SOCKET
48 unset get_agent_pid