52 lines
1.1 KiB
Bash
52 lines
1.1 KiB
Bash
cite about-plugin
|
|
about-plugin 'sshagent helper functions'
|
|
|
|
function sshagent() {
|
|
local op=$1
|
|
case $op in
|
|
on)
|
|
if [ -z "$SSH_AGENT_ENV" ]; then
|
|
export SSH_AGENT_ENV=${HOME}/.ssh/agent_env
|
|
fi
|
|
if [ ! -d "${HOME}/.ssh" ]; then
|
|
mkdir -p "${HOME}/.ssh"
|
|
restorecon -rv "${HOME}/.ssh"
|
|
fi
|
|
|
|
if [ -r ${SSH_AGENT_ENV} ]; then
|
|
## do not trust SSH_AGENT_PID
|
|
agent_pid=$( cat ${SSH_AGENT_ENV} | tail -1 | cut -d' ' -f4 | cut -d';' -f1 )
|
|
ps --pid ${agent_pid} -opid= &> /dev/null
|
|
if [ $? -ne 0 ]; then
|
|
echo "There's a dead ssh-agent at the landing..."
|
|
rm -f ${SSH_AGENT_ENV}
|
|
fi
|
|
fi
|
|
|
|
if [ ! -r $SSH_AGENT_ENV ]; then
|
|
ssh-agent > ${SSH_AGENT_ENV}
|
|
fi
|
|
|
|
. ${SSH_AGENT_ENV}
|
|
;;
|
|
off)
|
|
if [ -r ${SSH_AGENT_ENV} ]; then
|
|
## ensure the file indeed points to a really running agend:
|
|
agent_pid=$( cat ${SSH_AGENT_ENV} | tail -1 | cut -d' ' -f4 | cut -d';' -f1 )
|
|
ps auxw | grep ${agent_pid} | grep -v grep > /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo "Killing ssh-agent ..."
|
|
kill -9 ${agent_pid}
|
|
rm -f ${SSH_AGENT_ENV}
|
|
fi
|
|
fi
|
|
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
|
|
}
|
|
|
|
sshagent on
|