#!/bin/sh # # (c) spd_at_daphne.cps.unizar.es # Thu Nov 18 09:05:31 CET 2004 # License: Cantoware - Si te gusta ya te puedes dar con un canto en los dientes # # This script change some user name # Needs: root privileges # ECHO=/usr/bin/echo DO= usage() { echo "Use: `basename $0` [-hqn] old_uname new_uname" echo "-q: quiet" echo "-n: do nothing" } set -- `getopt hqn $*` for i in $* do case $i in -q) ECHO=:; shift;; -n) DO=echo; shift;; -h) usage exit 0 ;; esac done if [ $# -ne 3 ] then usage exit 1 fi umask 077 set -e TMPDIR=/tmp/mvhome.$$ oldname=$2 newname=$3 uid=`/usr/bin/id $oldname | sed -e 's/^uid=//' -e 's/(.*//'` domain=`domainname` if nismatch name=$oldname passwd.org_dir then if nismatch name=$newname passwd.org_dir then echo user \"$newname\" already exists in NIS+ else $DO nistbladm -m name=$newname "[name=$oldname]",passwd.org_dir $DO nistbladm -m home=/home/$newname "[name=$newname]",passwd.org_dir $DO nistbladm -m cname=$newname.$domain. \ "[cname=$oldname.$domain.,auth_type=DES]",cred.org_dir $DO nistbladm -m cname=$newname.$domain. \ "[cname=$oldname.$domain.,auth_type=LOCAL]",cred.org_dir $DO nischown $newname.$domain. "[uid=$uid],passwd.org_dir" $DO nischown $newname.$domain. \ "[cname=$newname.$domain.,auth_type=DES],cred.org_dir" rm -rf $TMPDIR mkdir $TMPDIR nismatch $oldname auto_home.org_dir > $TMPDIR/auto_home.tmp && \ ( $DO nistbladm -r key=$oldname auto_home.org_dir sed -e "s/$oldname/$newname/g" $TMPDIR/auto_home.tmp |\ tee $TMPDIR/auto_home_new.tmp $DO nisaddent -vf $TMPDIR/auto_home_new.tmp \ -t auto_home.org_dir key-value ) rm -rf $TMPDIR fi else echo user \"$oldname\" not found in NIS+ fi