diff --git a/ssh_agent_auto_launching b/ssh_agent_auto_launching new file mode 100644 index 0000000..54d8fb8 --- /dev/null +++ b/ssh_agent_auto_launching @@ -0,0 +1,45 @@ +SSH_ENV="$HOME/.ssh/environment" + +# start the ssh-agent +function start_agent { + echo "Initializing new SSH agent..." + # spawn ssh-agent + ssh-agent | sed 's/^echo/#echo/' > "$SSH_ENV" + echo succeeded + chmod 600 "$SSH_ENV" + . "$SSH_ENV" > /dev/null + ssh-add +} + +# test for identities +function test_identities { + # test whether standard identities have been added to the agent already + ssh-add -l | grep "The agent has no identities" > /dev/null + if [ $? -eq 0 ]; then + ssh-add + # $SSH_AUTH_SOCK broken so we start a new proper agent + if [ $? -eq 2 ];then + start_agent + fi + fi +} + +# check for running ssh-agent with proper $SSH_AGENT_PID +if [ -n "$SSH_AGENT_PID" ]; then + ps -ef | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null + if [ $? -eq 0 ]; then + test_identities + fi +# if $SSH_AGENT_PID is not properly set, we might be able to load one from +# $SSH_ENV +else + if [ -f "$SSH_ENV" ]; then + . "$SSH_ENV" > /dev/null + fi + ps -ef | grep "$SSH_AGENT_PID" | grep ssh-agent > /dev/null + if [ $? -eq 0 ]; then + test_identities + else + start_agent + fi +fi \ No newline at end of file