From e09a929e604287702f755a788fa544cafb5897ea Mon Sep 17 00:00:00 2001 From: John Internet Date: Thu, 2 Jan 2020 22:28:07 +0000 Subject: [PATCH] Add path support, to allow multiple agents to run (ie gitlab) --- agent-start | 12 +++++++++++- agent-stop | 37 +++++++++++++++++++++++++++---------- 2 files changed, 38 insertions(+), 11 deletions(-) diff --git a/agent-start b/agent-start index 0617e0b..b33bf22 100644 --- a/agent-start +++ b/agent-start @@ -1,7 +1,17 @@ #!/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. if [ -z "$SSH_AGENT_PID" ]; then 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 diff --git a/agent-stop b/agent-stop index 647f286..ac82295 100644 --- a/agent-stop +++ b/agent-stop @@ -1,16 +1,33 @@ #!/bin/sh if [ ! -z "$SSH_AGENT_PID" ]; then - echo "Var Set" - ssh-agent -k - 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 + # Here, the environment is set already, just kill the script. + eval $(ssh-agent -k) >/dev/null exit $? else - echo "SSH_AGENT_PID not set, /tmp/ssh-agent-id doesn't exist!" 1>&2 - exit 1 + # 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 + 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 \ No newline at end of file