#!/bin/sh # yp.pwupdate - update NIS passwd maps. # (C) 1994 Olaf Kirch, # This software is covered by the GNU GPL. # # This script updates the passwd.* maps for all domains served # by this host. We make a feeble attempt at locking, so as to # avoid concurrent builds on the databases. However, this locking # does _not_ guard us against the NIS maintainer running make while # we build our maps. Maybe it's time for a ypmake tool... # This script tries to be clever in guessing whether shadow passwords # are used or not. Patches by Charles Lopez, tjarls@infm.ulst.ac.uk. test $1 = "/etc/shadow" have_shadow=$? tmp=/tmp/ypwd.upd.$$ lock=/tmp/yppasswd.lock mailinfo () { if [ -x /bin/mailx -o /usr/bin/mailx ]; then mailx -s "$1" $2 else (echo "Subject: $1"; echo; cat) | sendmail $2 fi } echo $$ > $tmp i=0; while ! ln $tmp $lock; do sleep 10; i=`expr $i + 1`; if [ $i -gt 60 ]; then echo "NIS passwd maps seem permanently locked" | mailinfo "Could not remake NIS passwd.* maps" root rm -f $tmp exit 2 fi done mtemp=/tmp/ypw.tmp.$$ merr=/tmp/ypw.err.$$ if [ $have_shadow -eq 0 ]; then cd /etc; if ! pwunconv > $mtemp 2>&1; then ( echo "Couldn't pwunconv your /etc/shadow file." echo "Error messages:" cat $mtemp echo ) | mailinfo "Could not remake NIS passwd.* maps" root exit 2 fi fi cd /var/yp for dir in *; do if [ -d $dir -a "$dir" != "binding" ]; then ( if [ -f $dir/Makefile ]; then makefile=Makefile else makefile=../Makefile fi cd $dir && if ! make -f $makefile -sk passwd > $mtemp 2>&1; then echo "Errors in $PWD:" cat $mtemp echo fi >> $merr ) fi done if [ -s $merr ]; then ( echo "The following errors occurred while remaking the NIS passwd maps" echo cat $merr ) | mailinfo "Errors while remaking NIS passwd.* maps" root fi rm -f $mtemp $merr rm -f $tmp $lock