#!/bin/bash # lifetime, in minutes lifetime=15 hostopt="" [ -z "$hostopt" ] && hostopt="${HOSTNAME}" [ -z "$hostopt" ] && hostopt=`uname -n 2>/dev/null || echo unknown` keys=~/.ssh/id_rsa_root function with-keys { unset SSH_AUTH_SOCK SSH_AGENT_PID eval $(keychain --timeout $lifetime --eval --host "$hostopt-root" $keys) export SSHROOT=1 exec "$@" } function with-agent { unset SSH_AUTH_SOCK SSH_AGENT_PID eval $(keychain --timeout $lifetime --eval --host "$hostopt-root") export SSHROOT=1 echo with-agent: Running: "$@" exec "$@" } command="$1" shift case "$command" in init) echo "Loading default keys (lifetime $lifetime)..." with-agent ssh-add -t ${lifetime}m "$@" $keys ;; add) echo "Loading keys (lifetime $lifetime):" "$@" with-agent ssh-add -t ${lifetime}m "$@" ;; list) with-agent ssh-add -l ;; destroy) with-agent ssh-add -D ;; shell) with-keys "$SHELL" "$@" ;; ssh) #with-keys ssh -l root "$@" with-keys ssh "$@" ;; *) if [ -z "$command" ]; then echo "Usage: $0 init" >&2 echo " $0 add" >&2 echo " $0 list" >&2 echo " $0 destroy" >&2 echo " $0 shell" >&2 echo " $0 ssh [args]" >&2 echo " $0 [cmd]" >&2 else echo Executing: "$command" "$@" with-agent "$command" "$@" fi ;; esac