adding sshagent plugin
parent
c768d8e199
commit
643c5ed19d
|
|
@ -0,0 +1,51 @@
|
|||
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
|
||||
Loading…
Reference in New Issue