Created
June 10, 2020 08:00
-
-
Save no1xsyzy/951967d7929826876924fd6d70b26eef to your computer and use it in GitHub Desktop.
Make ssh-agent idempotent
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Usage: . /path/to/auto-ssh-agent | |
# Check if exists ssh-agent in current session | |
if env | grep -q '^SSH'; then | |
echo Agent pid $SSH_AGENT_PID; | |
else | |
# Cached ssh-agent info is user-specified | |
_SOURCE_DIR="~/.local/run" | |
_SOURCE_FILE="${_SOURCE_DIR}/ssh-agent" | |
mkdir -p "$_SOURCE_DIR" | |
# if exists cached file | |
if [ -f "$_SOURCE_FILE" ]; then | |
# find the pid in it and find the program in it. | |
_SOURCE_FILE_PID=$( tail -1 "${_SOURCE_FILE}" | cut -d " " -f 4 | cut -d ";" -f 1 ) | |
_PROCESS_PRG=$( ps -elf | awk '$4 == "'${_SOURCE_FILE_PID}'" {print $15}' ) | |
# if the process is an ssh-agent | |
if [ "ssh-agent" = "$_PROCESS_PRG" ]; then | |
source "$_SOURCE_FILE" | |
else | |
# create new ssh-agent and cache it | |
eval $( ssh-agent -s | tee "$_SOURCE_FILE" ) | |
fi | |
unset _SOURCE_FILE_PID | |
unset _PROCESS_PRG | |
else | |
# create new ssh-agent and cache it | |
eval $( ssh-agent -s | tee "$_SOURCE_FILE" ) | |
fi | |
unset _SOURCE_DIR | |
unset _SOURCE_FILE | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment