|
@@ -17,10 +17,29 @@ function start_agent {
|
|
add_key
|
|
add_key
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+function list_not_loaded_keys {
|
|
|
|
+ KEYS=$(list_keys)
|
|
|
|
+ KEYS_LOADED=$(ssh-add -l | awk '{ print $3}')
|
|
|
|
+ KEYS_NOT_LOADED=""
|
|
|
|
+ for key in ${KEYS}
|
|
|
|
+ do
|
|
|
|
+ if ! grep -q "${key}" <<< ${KEYS_LOADED}; then
|
|
|
|
+ KEYS_NOT_LOADED="${KEYS_NOT_LOADED} ${key}"
|
|
|
|
+ fi
|
|
|
|
+ done
|
|
|
|
+
|
|
|
|
+ echo "${KEYS_NOT_LOADED}"
|
|
|
|
+}
|
|
|
|
+
|
|
function add_key {
|
|
function add_key {
|
|
/usr/bin/ssh-add -t 86400 $(list_keys)
|
|
/usr/bin/ssh-add -t 86400 $(list_keys)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+function update_keys {
|
|
|
|
+ KEYS=$(list_not_loaded_keys)
|
|
|
|
+ [[ -n ${KEYS} ]] && /usr/bin/ssh-add -t 86400 ${KEYS}
|
|
|
|
+}
|
|
|
|
+
|
|
function list_keys {
|
|
function list_keys {
|
|
PRIV_KEYS=""
|
|
PRIV_KEYS=""
|
|
for file in ${HOME}/.ssh/id_*
|
|
for file in ${HOME}/.ssh/id_*
|
|
@@ -43,6 +62,8 @@ if [ -f "${SSH_ENV}" ]; then
|
|
start_agent
|
|
start_agent
|
|
elif [ $agent_run_state -eq 1 ]; then
|
|
elif [ $agent_run_state -eq 1 ]; then
|
|
add_key
|
|
add_key
|
|
|
|
+ elif [ $agent_run_state -eq 0 ]; then
|
|
|
|
+ update_keys
|
|
fi
|
|
fi
|
|
else
|
|
else
|
|
start_agent;
|
|
start_agent;
|
|
@@ -50,7 +71,7 @@ fi
|
|
|
|
|
|
# Create our own hardlink to the socket (with random name)
|
|
# Create our own hardlink to the socket (with random name)
|
|
MYSOCK=/tmp/ssh_agent.${RANDOM}.sock
|
|
MYSOCK=/tmp/ssh_agent.${RANDOM}.sock
|
|
-ln --no-target-directory ${SSH_AUTH_SOCK} ${MYSOCK}
|
|
|
|
|
|
+ln --force --no-target-directory ${SSH_AUTH_SOCK} ${MYSOCK}
|
|
export SSH_AUTH_SOCK=${MYSOCK}
|
|
export SSH_AUTH_SOCK=${MYSOCK}
|
|
|
|
|
|
end_agent()
|
|
end_agent()
|
|
@@ -64,4 +85,4 @@ end_agent()
|
|
rm ${SSH_AUTH_SOCK}
|
|
rm ${SSH_AUTH_SOCK}
|
|
}
|
|
}
|
|
|
|
|
|
-trap end_agent EXIT
|
|
|
|
|
|
+trap end_agent EXIT SIGKILL SIGTERM
|