39 lines
1.1 KiB
Bash
Executable File
39 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# this starts an agent if it isn't running
|
|
# and adds firesim.pem if there's no key setup
|
|
|
|
# adapted from https://stackoverflow.com/a/48509425
|
|
# Ensure agent is running
|
|
|
|
_no_agent() {
|
|
# NOTE: Ignore agent forwarding if running within tmux or screen, as
|
|
# detaching a session and logging out closes the agent socket.
|
|
{ test -n "${TMUX}${STY}" && test -z "${SSH_AGENT_PID}" ; } ||
|
|
{ ssh-add -l >/dev/null 2>&1 ; test $? -eq 2 ; }
|
|
}
|
|
|
|
if _no_agent ; then
|
|
{
|
|
flock -x 3
|
|
# Load cached agent connection info.
|
|
source /dev/fd/3
|
|
|
|
if _no_agent ; then
|
|
# Start agent and cache agent connection info.
|
|
eval "$(umask 066 && ssh-agent -s 3>&- | tee /dev/fd/3)" >/dev/null
|
|
fi
|
|
} 3<> ~/.ssh-agent
|
|
fi
|
|
|
|
# if key is available, print success, else add it
|
|
if ssh-add -l | grep -q 'firesim\.pem'; then
|
|
echo "success: firesim.pem available in ssh-agent"
|
|
else
|
|
if ssh-add ~/firesim.pem; then
|
|
echo "success: firesim.pem added to ssh-agent"
|
|
else
|
|
echo "FAIL: ERROR adding ~/firesim.pem to ssh-agent. does it exist?"
|
|
fi
|
|
fi
|