#!/bin/bash # $HeadURL$ $LastChangedRevision$ set -e PROGNAME=$(basename $0) # Load support functions . $(pcms-config PCMS_SHARE_PREFIX)/scripts/support.sh main() { # Defaults for options VERBOSELEVEL=2 OPT_FILE= OPT_TOUCH=false # Process options while [ $# -ge 1 ]; do case $1 in --file=*) OPT_FILE=${1#*=} ;; --touch) OPT_TOUCH=true ;; --debug=*) VERBOSELEVEL=${1#*=} ;; -d) VERBOSELEVEL=$2; shift ;; -v|--verbose) VERBOSELEVEL=3 ;; --) shift; break ;; -*) error "main: $1: bad option" ;; *) break ;; esac shift done # Process arguments [ $# = 1 ] || usage eval set -- $(encode --decode "$1") [ $# -eq 2 ] || usage LOGIN="$1" SSHKEY="$2" # Sanity checks and derivations id $LOGIN >/dev/null 2>&1 || error "$LOGIN: no such login" if [ "X$OPT_FILE" != X ]; then CHOWN_FLAG=false else CHOWN_FLAG=true eval "OPT_FILE=~$LOGIN/.ssh/authorized_keys" fi # Guts lineinfile --after=EOF --text="$SSHKEY" --file=$OPT_FILE ! $CHOWN_FLAG || chown -R $LOGIN:$LOGIN $(dirname $OPT_FILE) ! $OPT_TOUCH || touch $OPT_FILE } usage() { echo "Usage: $PROGNAME @" >&2; exit 1; } main "$@"