Add path support, to allow multiple agents to run (ie gitlab)

This commit is contained in:
John Internet 2020-01-02 22:28:07 +00:00
parent d8263c4260
commit e09a929e60
2 changed files with 38 additions and 11 deletions

View file

@ -1,7 +1,17 @@
#!/bin/sh #!/bin/sh
STORE_PATH=/tmp
if [ ! -z "$1" ]; then
# This allows us to work with things like gitlab.
# where the same thing might be running concurrently.
# If default, it only stores in /tmp/, but if a path is added, it's interpolated.
STORE_PATH="$STORE_PATH/$1"
mkdir -p "$STORE_PATH"
fi
# Start the SSH agent if it isn't already. # Start the SSH agent if it isn't already.
if [ -z "$SSH_AGENT_PID" ]; then if [ -z "$SSH_AGENT_PID" ]; then
eval "$(ssh-agent)" > /dev/null eval "$(ssh-agent)" > /dev/null
echo "$SSH_AGENT_PID" > /tmp/ssh-agent-id echo "$SSH_AGENT_PID" > "$STORE_PATH"/ssh-agent-id
echo "$SSH_AUTH_SOCK" > "$STORE_PATH"/ssh-auth-sock
fi fi

View file

@ -1,16 +1,33 @@
#!/bin/sh #!/bin/sh
if [ ! -z "$SSH_AGENT_PID" ]; then if [ ! -z "$SSH_AGENT_PID" ]; then
echo "Var Set" # Here, the environment is set already, just kill the script.
ssh-agent -k eval $(ssh-agent -k) >/dev/null
exit $?
elif [ -f "/tmp/ssh-agent-id" ]; then
echo "File Exists"
cat /tmp/ssh-agent-id
SSH_AGENT_PID=$(cat /tmp/ssh-agent-id)
ssh-agent -k
exit $? exit $?
else else
echo "SSH_AGENT_PID not set, /tmp/ssh-agent-id doesn't exist!" 1>&2 # The env isn't set, construct the file path.
STORE_PATH=/tmp
if [ ! -z "$1" ]; then
STORE_PATH="$STORE_PATH/$1"
fi
if [ ! -d "$STORE_PATH" ]; then
echo "Store Path $STORE_PATH doesn't exist!" >&2
exit 1 exit 1
fi fi
# And check our files exist.
if [ -f "$STORE_PATH/ssh-agent-id" ]; then
# Grab our PID and socket.
SSH_AGENT_PID=$(cat "$STORE_PATH/ssh-agent-id")
export SSH_AGENT_PID
SSH_AUTH_SOCK=$(cat "$STORE_PATH/ssh-auth-sock")
export SSH_AUTH_SOCK
eval $(ssh-agent -k) >/dev/null
exit $?
else
echo "SSH_AGENT_PID not set, $STORE_PATH/ssh-auth-sock doesn't exist!" >&2
exit 1
fi
fi