sshagent 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #### My (demuredemeanor) sub source ssh-agent script
  2. # Uses tabstop=4; shiftwidth=4 tabs; foldmarker={{{,}}};
  3. # https://notabug.org/demure/dotfiles/
  4. # legacy repo http://github.com/demure/dotfiles
  5. # vim:set syntax=sh:
  6. # Add check for key exists first
  7. # Add check -> Y/N for ssh_env existing? might not need, if using __ssh_agent right
  8. ## SSH Agent
  9. function __ssh_agent() {
  10. local SSH_ENV="${HOME}/.ssh/environment"
  11. local U_CHECK="$(logname)"
  12. logname &>/dev/null
  13. local F_CHECK="$?"
  14. function __start_agent {
  15. echo "Initialising new SSH agent..."
  16. /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
  17. echo succeeded
  18. chmod 600 "${SSH_ENV}"
  19. . "${SSH_ENV}" > /dev/null
  20. /usr/bin/ssh-add;
  21. }
  22. ## Source SSH settings, if applicable
  23. if [ ${F_CHECK} == 0 ] && { [ "${U_CHECK}" == "${USER}" ] || [ "${U_CHECK}" == "logname: no login name" ] ;}; then
  24. if [ -f "${SSH_ENV}" ]; then
  25. . "${SSH_ENV}" > /dev/null
  26. ps -ef 2>/dev/null | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
  27. pstree -up ${USER} 2>/dev/null | grep ${SSH_AGENT_PID} | grep ^ssh-agent > /dev/null || {
  28. __start_agent;
  29. }
  30. }
  31. else
  32. __start_agent;
  33. fi
  34. fi
  35. }