56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#!/bin/sh
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# Use is subject to license terms.
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#pragma ident "%Z%%M% %I% %E% SMI"
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpTEXTDOMAIN=SUNW_OST_OSCMD
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpexport TEXTDOMAIN
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# list_princs keytab
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# returns a list of principals in the keytab
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# sorted and uniquified
56a424cca6b3f91f31bdab72a4626c48c779fe8bmplist_princs() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp klist -k $keytab | tail +4 | awk '{print $2}' | sort | uniq
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp}
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpset_command() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp if [ x$command != x ] ; then
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp cmd_error `gettext "Only one command can be specified"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp usage
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp exit 1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp fi
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp command=$1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp}
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#interactive_prompt prompt princ
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# If in interactive mode return true if the principal should be acted on
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# otherwise return true all the time
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# SUNW14resync: If in interactive mode the default is now to return false
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# i.e. if in interactive mode unless the user types "Yes" or
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp# "yes" false will be returned.
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp#
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpinteractive_prompt() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp if [ $interactive = 0 ] ; then
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp return 0
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp fi
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp PROMPT=`gettext "%s for %s? [yes no] "`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp Y1=`gettext "yes"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp Y2=`gettext "Yes"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp printf "$PROMPT" "$1" "$2"
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp read ans
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp case $ans in
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ${Y1}|${Y2})
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp return 0
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp esac
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp return 1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp }
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpcmd_error() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp echo $@ 2>&1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp }
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpusage() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp USAGE=`gettext "Usage: $0 [-i] [-f file] list|change|delete|delold"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp echo $USAGE
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp}
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpchange_key() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp princs=`list_princs `
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp for princ in $princs; do
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ACTION=`gettext "Change key"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp if interactive_prompt "$ACTION" $princ; then
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp kadmin -k -t $keytab -p $princ -q "ktadd -k $keytab $princ"
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp fi
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp done
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp }
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpdelete_old_keys() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp princs=`list_princs `
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp for princ in $princs; do
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ACTION=`gettext "Delete old keys"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp if interactive_prompt "$ACTION" $princ; then
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp kadmin -k -t $keytab -p $princ -q "ktrem -k $keytab $princ old"
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp fi
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp done
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp }
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpdelete_keys() {
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp interactive=1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp princs=`list_princs `
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp for princ in $princs; do
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ACTION=`gettext "Delete all keys"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp if interactive_prompt "$ACTION" $princ; then
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp kadmin -p $princ -k -t $keytab -q "ktrem -k $keytab $princ all"
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp fi
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp done
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp }
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpkeytab=/etc/krb5/krb5.keytab
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpinteractive=0
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpCHANGE=`gettext "change"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpDELOLD=`gettext "delold"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpDELETE=`gettext "delete"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpLIST=`gettext "list"`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpwhile [ $# -gt 0 ] ; do
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp opt=$1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp shift
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp case $opt in
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp "-f")
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp keytab=$1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp shift
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp "-i")
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp interactive=1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ${CHANGE}|${DELOLD}|${DELETE}|${LIST})
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp set_command $opt
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp *)
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ILLEGAL=`gettext "Illegal option: "`
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp cmd_error $ILLEGAL $opt
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp usage
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp exit 1
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp esac
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpdone
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp
56a424cca6b3f91f31bdab72a4626c48c779fe8bmpcase $command in
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp $CHANGE)
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp change_key
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp $DELOLD)
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp delete_old_keys
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp $DELETE)
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp delete_keys
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp $LIST)
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp klist -k $keytab
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp *)
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp usage
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp ;;
56a424cca6b3f91f31bdab72a4626c48c779fe8bmp esac