#!/sbin/sh # # # Copyright 12/01/99 Sun Microsystems, Inc. All Rights Reserved # # # # call dsimport with the appropriate parameters. This is used to be able to # keep the default makefile as created by the system administrators for NIS # unset ENV BASEDIR=`pkgparam SUNWdsnis BASEDIR` PATH=$BASEDIR/SUNWconn/ldap/sbin:$BASEDIR/SUNWconn/ldap/bin:$BASEDIR/SUNWconn/ldap/lib:/usr/ccs/bin:/bin:$PATH export PATH NISCONF=/etc/opt/SUNWconn/ldap/current/nis.conf while getopts blsd:i:o:m: c do true done shift `expr $OPTIND - 1` TABLENAME=`echo $2 | sed 's/.*\///'` DOMAIN_NAME=`echo $2 | awk -F/ '{ print $(NF-1) }'` echo Processing $TABLENAME unset IN if [ "$1" != "-" ] then IN=$1 fi if [ "$DSYPINIT" = "ON" ] then case $TABLENAME in ethers.byname|group.bygid|hosts.byname|\ networks.byname|passwd.byuid|protocols.byname) cat $IN >/dev/null exit 0;; # # special case for hosts.byaddr # hosts.byaddr) dsmulti $IN | dsimport -M simple -c $NISCONF -r -t $TABLENAME exit $? ;; # # special case for ethers.byaddr # ethers.byaddr) dsmulti -n $IN | grep -v YP_MULTI | dsimport -M simple -c $NISCONF -r -t $TABLENAME exit $? ;; # # special case for netgroup # netgroup) # # suppress comments and empty lines and call dsimport # And change tabs into space # sed -e '/^#/d;s/ / /g;s/ */ /g;s/ \\$/\\/' $IN | dsimport -M simple -c $NISCONF -r -t $TABLENAME exit $? ;; # # special case for mail.aliases # mail.aliases) egrep -v "^#|^$" $IN | egrep -v "@[ ][ ]*@" | dsimport -M simple -c $NISCONF -r -t $TABLENAME exit $? ;; esac # # suppress comments and empty lines and call dsimport # egrep -v "^#|^$" $IN | dsimport -M simple -c $NISCONF -r -t $TABLENAME exit $? else case $TABLENAME in ethers.byname|group.bygid|hosts.byname|\ networks.byname|passwd.byuid|protocols.byname) cat $IN >/dev/null exit 0;; # # special case for hosts.byaddr # hosts.byaddr) dsmulti $IN | makedbm - /tmp/$TABLENAME makedbm -u /var/yp/$DOMAIN_NAME/$TABLENAME | dsmulti | makedbm - /tmp/$TABLENAME.old dbmdiff -H /tmp/$TABLENAME.old /tmp/$TABLENAME | dsimport -M simple -c $NISCONF -R -t $TABLENAME dbmdiff -H /tmp/$TABLENAME /tmp/$TABLENAME.old | dsimport -M simple -c $NISCONF -t $TABLENAME rm -f /tmp/$TABLENAME.old.* /tmp/$TABLENAME.* exit 0 ;; # # special case for ethers.byaddr # ethers.byaddr) dsmulti -n $IN | grep -v YP_MULTI | makedbm - /tmp/$TABLENAME makedbm -u /var/yp/$DOMAIN_NAME/$TABLENAME | dsmulti -n | grep -v YP_MULTI | makedbm - /tmp/$TABLENAME.old dbmdiff -H -D /tmp/$TABLENAME.old /tmp/$TABLENAME | dsimport -M simple -c $NISCONF -R -t $TABLENAME dbmdiff -H /tmp/$TABLENAME /tmp/$TABLENAME.old | dsimport -M simple -c $NISCONF -t $TABLENAME rm -f /tmp/$TABLENAME.old.* /tmp/$TABLENAME.* exit 0 ;; # # special case for netgrop # netgroup) # # suppress comments and empty lines and call dsimport # And change tabs into space # sed -e '/^#/d;s/ / /g;s/ */ /g;s/ \\$/\\/' $IN | makedbm - /tmp/$TABLENAME dbmdiff -D /var/yp/$TABLENAME /tmp/$TABLENAME | dsimport -M simple -c $NISCONF -R -t $TABLENAME dbmdiff /tmp/$TABLENAME /var/yp/$DOMAIN_NAME/$TABLENAME | dsimport -M simple -c $NISCONF -t $TABLENAME rm -f /tmp/$TABLENAME.* exit 0 ;; # # special case for mail.aliases # mail.aliases) cat $IN | egrep -v "^#|^$" | egrep -v "@[ ][ ]*@" | makedbm - /tmp/$TABLENAME dbmdiff -D /var/yp/$DOMAIN_NAME/$TABLENAME /tmp/$TABLENAME | dsimport -M simple -c $NISCONF -R -t $TABLENAME dbmdiff /tmp/$TABLENAME /var/yp/$DOMAIN_NAME/$TABLENAME | dsimport -M simple -c $NISCONF -t $TABLENAME rm -f /tmp/$TABLENAME.* exit 0 ;; # # special case for networks.byaddr # networks.byaddr) cat $IN | egrep -v "^#|^$" | makedbm - /tmp/$TABLENAME dbmdiff -H -D /var/yp/$DOMAIN_NAME/$TABLENAME /tmp/$TABLENAME | dsimport -M simple -c $NISCONF -R -t $TABLENAME dbmdiff -H /tmp/$TABLENAME /var/yp/$DOMAIN_NAME/$TABLENAME| dsimport -M simple -c $NISCONF -t $TABLENAME rm -f /tmp/$TABLENAME.* exit 0 ;; # # special case for protocols.bynumber and rpc.bynumber # do not use diffs because we don't deal correctly with aliases in these maps # However they are quite small and don't change often # protocols.bynumber|rpc.bynumber) cat $IN | egrep -v "^#|^$" | dsimport -M simple -c $NISCONF -r -t $TABLENAME exit 0 ;; esac # # suppress comments and empty lines and call dsimport # cat $IN | egrep -v "^#|^$" | makedbm - /tmp/$TABLENAME dbmdiff -D /var/yp/$DOMAIN_NAME/$TABLENAME /tmp/$TABLENAME | dsimport -M simple -c $NISCONF -R -t $TABLENAME dbmdiff /tmp/$TABLENAME /var/yp/$DOMAIN_NAME/$TABLENAME | dsimport -M simple -c $NISCONF -t $TABLENAME rm -f /tmp/$TABLENAME.* exit 0 fi