⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4.1.1_us_encryption.sh

📁 操作系统SunOS 4.1.3版本的源码
💻 SH
字号:
#! /bin/sh# %Z%%M% %I% %E% SMI##       Copyright (c) 1989-1990, Sun Microsystems, Inc.  All Rights Reserved.#       Sun considers its source code as an unpublished, proprietary#       trade secret, and it is available only under strict license#       provisions.  This copyright notice is placed here only to protect#       Sun in the event the source is deemed a published work.  Dissassembly,#       decompilation, or other means of reducing the object code to human#       readable form is prohibited by the license agreement under which#       this code is provided to the user or company in possession of this#       copy.##       RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the#       Government is subject to restrictions as set forth in subparagraph#       (c)(1)(ii) of the Rights in Technical Data and Computer Software#       clause at DFARS 252.227-7013 (Oct. 1988) and FAR 52.227-19 (c) #	(June 1987). Sun Microsystems, Inc., 2550 Garcia Avenue, Mountain#	View, California 94043.###	This is the cdrom install script for the US Encryption kit.### variables# 	a. TAG file, the original library will be saved in libXXXX.$TAG# 	b. While installing files, $LOCK file will be created at#		/usr/lib/$LOCK - During installation of server#		/export/exec/{sun3,sun4}/lib/$LOCK - During installation of #			 the client.# 		The contents of this file will be the time of the execution.#TAG="INTER"LOCK=INSTALL_UNBUNDLED_LOCKDISK_AVAIL=`df /usr | sed -n '2p' | awk '{print $4 }'`if [ -d /export/exec ]; then  DISK_AVAIL_OTHER=`df /export/exec | sed -n '2p' | awk '{print $4 }'`fiDISK_REQ=2000DEF_RELEASE="4.1.1"PRODUCT="sunos"##	Check and create the lock file#create_lockfile(){	LOCKFILE=$INSTALL_PATH/lib/${LOCK}      	if [ -f ${LOCKFILE} ]; then        echo        echo "The previous installation of the server terminated abnormally."        echo "Do you wish to abort the current installation and check ?"        echo "If you abort, it will be necessary to restart the"        echo "installation from the beginning."        echo "However, if you wish to continue, the installation"        echo "will resume, assuming no crucial problems being present."        echo -n "Please enter 'y' to abort or 'n' to continue: "        while true        do          read ANS          echo "${ANS}" >> $LOGFILE          case ${ANS} in          "y" )            echo "Installation terminating"            echo "Please check server's library"            echo "and remove ${LOCKFILE} file before you"            echo "restarting the installation."            exit 2;            break;;          "n" )            echo "Continuing the installation."            break;;          * )            echo "Please enter y or n: "          esac        done      	fi      	rm -f ${LOCKFILE}      	date > ${LOCKFILE}}disk_msg() {	echo       	echo "A minimum of ${DISK_REQ} kbytes in the $1 partition is"      	echo "required to install the ${DEF_RELEASE} US Encryption kit."      	echo "This space requirement, for the most part, is temporary."      	echo "The space will primarily be used to backup files"      	echo "during the course of the installation.  Following"      	echo "completion, the backup copies will be removed.  If you desire"      	echo "to install the US Encryption kit, it is suggested that"      	echo "you move non-essential files out of the $1 partition,"      	echo "restart this install from the beginning, and restore the"      	echo "files after the Encryption kit installation is complete."      	echo "$1 currently has $2 kbytes available."}## 	Multi-release support, find all services of own architecture#find_dirs(){	echo "Checking for system release compatibility with installation media."	cd $BINDIR	FILES=`find . -type f -print | \		egrep -v '(./share|./5lib|bin/yppasswd|lib/libc_p.a.us)'` 	MAJOR_MINOR=`echo $FILES | sed 's/.*libc.so.//' | sed 's/.us.*$//'`	DIR=""	for dir in /export/exec/${THISARCH}.${PRODUCT}.${DEF_RELEASE} $1	do		if [ -d ${dir} -a ! -h ${dir} ]; then    			if [ -f ${dir}/lib/libc.so.${MAJOR_MINOR} ]; then      				DIR="${DIR} ${dir}"    			fi  		fi	done}install_usr(){        echo        echo "Installing essential root and /usr files."        echo        #        # Installing crypt only files        #        EXTRACT_LIST="bin/crypt bin/des"	cd ${BINDIR} 	tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)	if [ "$?" -ne 0 ]; then		echo "Error in extracting software, exiting"		exit 1	fi        #        # Save back ups for /usr/lib/libc.*        #        EXTRACT_LIST=""        REMOVE_LIST=""        cd ${INSTALL_PATH}/lib        for lib in libc.*; do          	if [ -f ${TAG}.${lib} ]; then            		echo "`pwd`/${lib} has been previously installed."          	else            		ln ${lib} ${TAG}.${lib}            		echo "${lib} has been backed up in ${TAG}.${lib}"          	fi          	EXTRACT_LIST="${EXTRACT_LIST} lib/${lib}.us"          	REMOVE_LIST="${REMOVE_LIST} lib/${TAG}.${lib}"        done          #        # Now install localized libraries.        # The name of installed files are /usr/lib/libc*.us        #        cd ${BINDIR}	tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)	if [ "$?" -ne 0 ]; then		echo "Error in extracting software, exiting"		exit 1	fi          #        # Now, rename newly installed files to its standard names.        #        (trap 'echo "Installing libc libraries, cannot be stopped."' 1 2 3 9 15        cd ${INSTALL_PATH}/lib        for lib in libc*.us; do          	b=`basename $lib .us`          	mv $lib $b        done)	cd ${INSTALL_PATH}        rm ${REMOVE_LIST}          #        # Installing existing files        #        echo "Assembling extract list."        EXTRACT_LIST=""        REMOVE_LIST=""	# Get a list of files in the usr package	#	cd $BINDIR	FILES=`find . -type f -print | egrep -v '(./share|./5lib|bin/yppasswd|lib/libc_p.a.us|bin/crypt|bin/des)'`        cd ${INSTALL_PATH}        for f in ${FILES}; do          	if [ -f ${f} ]; then            		EXTRACT_LIST="${EXTRACT_LIST} ${f}"            		ds=`dirname ${f}`            		bs=`basename ${f} .us`            		ln $f ${ds}/${TAG}.${bs}            		REMOVE_LIST="${REMOVE_LIST} ${ds}/${TAG}.${bs}"          	fi        done        cd ${BINDIR}	tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)	if [ "$?" -ne 0 ]; then		echo "Error in extracting software, exiting"		exit 1	fi	cd ${INSTALL_PATH}        rm ${REMOVE_LIST}}  install_networking(){        #        # If /usr/bin/yppasswd exists, copy it from the tape also.        #        if [ -f ${INSTALL_PATH}/bin/yppasswd ]; then          	echo          	echo "Installing networking files."          	echo          	ln ${INSTALL_PATH}/bin/yppasswd \			${INSTALL_PATH}/bin/${TAG}.yppasswd          	EXTRACT_LIST="bin/yppasswd"          	REMOVE_LIST="bin/${TAG}.yppasswd"        	cd ${BINDIR}		tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)		if [ "$?" -ne 0 ]; then			echo "Error in extracting software, exiting"			exit 1		fi          	cd ${INSTALL_PATH}          	rm ${REMOVE_LIST}        fi}  install_debugging(){        #        # If /usr/lib/libc_p.a exists, update debugging also.        #        if [ -f ${INSTALL_PATH}/lib/libc_p.a ]; then          	echo          	echo "Installing debugging files."          	echo          	cd ${INSTALL_PATH}/lib          	if [ -f ${TAG}.libc_p.a ]; then            		echo "`pwd`/libc_p.a has been previously installed."          	else            		ln libc_p.a ${TAG}.libc_p.a            		echo "libc_p.a has been backed up in ${TAG}.libc_p.a"          	fi          	EXTRACT_LIST="lib/libc_p.a.us"          	REMOVE_LIST="lib/${TAG}.libc_p.a"        	cd ${BINDIR}		tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)		if [ "$?" -ne 0 ]; then			echo "Error in extracting software, exiting"			exit 1		fi          	#          	# install libc_p.a and cleaning up          	#          	(trap 'echo "Installing libc libraries, cannot be stopped."' 1 2 3 9 15          	cd ${INSTALL_PATH}/lib          	for lib in libc*.us          	do            		b=`basename ${lib} .us`            		mv ${lib} ${b}          	done)          	cd ${INSTALL_PATH}          	rm ${REMOVE_LIST}        fi}  install_system_v(){        #        # If /usr/5lib exists, save and copy files as it was done for        # /usr/lib.        #        if [ -d ${INSTALL_PATH}/5lib ]; then		echo          	echo "Installing System V files."          	echo		EXTRACT_LIST=""		REMOVE_LIST=""          	cd ${INSTALL_PATH}/5lib          	for lib in libc.* libc_p.*          	do            	    if [ -f ${TAG}.${lib} ]; then              		echo  "`pwd`/${lib} has been previously installed."            	    else              		ln ${lib} ${TAG}.${lib}              		echo "5lib: ${lib} has been backed up in ${TAG}.${lib}"            	    fi            	    EXTRACT_LIST="${EXTRACT_LIST} 5lib/${lib}.us"            	    REMOVE_LIST="${REMOVE_LIST} 5lib/${TAG}.${lib}"          	done		[ ! "$EXTRACT_LIST" ] && return        	cd ${BINDIR}		tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)		if [ "$?" -ne 0 ]; then			echo "Error in extracting software, exiting"			exit 1		fi          	(trap 'echo "Installing libc libraries, cannot be stopped."' 1 2 3 9 15          	cd ${INSTALL_PATH}/5lib          	for lib in libc*.us          	do            		b=`basename ${lib} .us`            		mv ${lib} ${b}          	done)		cd ${INSTALL_PATH}          	rm ${REMOVE_LIST}        fi}    install_manual(){        #        # If /usr/share/man/man1 exists, update manuals also.        #        if [ -d ${INSTALL_PATH}/share/man/man1 ]; then        	echo          	echo "Installing manual files."          	echo          	EXTRACT_LIST="share"        	cd ${BINDIR}		tar vcf - ${EXTRACT_LIST} | (cd ${INSTALL_PATH}; tar xvpfB -)		if [ "$?" -ne 0 ]; then			echo "Error in extracting software, exiting"			exit 1		fi        fi}############################################# Start of main program############################################# # You must be root#if [ "`whoami`x" != "root"x ]; then   echo "You must be root do install!"   exit 1fi## Check for extract_unbundled passed parameters#if [ $# -gt 0 ]then    for param in $*;    do	case "$param" in	-m*)		MOUNT_POINT=`expr $param : '-m\(.*\)' '|' "1"`		if [ $MOUNT_POINT -eq 1 ]; then			echo			echo "Invalid mount point, exiting"			exit 1		fi ;;  	-p*) 		PRODUCT_DIR=`expr $param : '-p\(.*\)' '|' "1"`		if [ $PRODUCT_DIR -eq 1 ]; then			echo			echo "Invalid product name, exiting"			exit 1		fi ;;  	esac    donefi## Mount point and product name must be set#if [ ! "$MOUNT_POINT" ]; then	echo "Mount point not set, exiting"	exit 1fiif [ ! "$PRODUCT_DIR" ]; then	echo "Product name not set, exiting"	exit 1fi## Find out the architecture of the host machine, and# set shell variable OTHERARCH.#THISARCH=`/bin/arch`case ${THISARCH} insun3)  	OTHERARCH="sun4" ;;sun4)  	OTHERARCH="sun3" ;;*)  	echo  	echo "Invalid architecture, exiting."  	exit 1esacBINDIR=$MOUNT_POINT/$PRODUCT_DIR/$THISARCHechoecho "Installing the ${DEF_RELEASE} US Encryption kit for the ${THISARCH} architecture."## First let's do it for the own architectures.# Loop through all potential install directories because of matching# libc major and minor numbers.#find_dirs /usrfor INSTALL_PATH in ${DIR}do  echo  echo "Do you wish to install the ${DEF_RELEASE} US Encryption kit under"  echo "${INSTALL_PATH} for the ${THISARCH} architecture?"  echo -n "Please enter y to continue or n to skip this directory: "  while true   do    	read ANS    	echo "${ANS}" >> $LOGFILE    	case ${ANS} in    	"y" )  		#  		# Check for available disk space in /usr or /export/exec  		#  		if [ ${INSTALL_PATH} = "/usr" ]; then			if [ ${DISK_AVAIL} -lt ${DISK_REQ} ]; then				disk_msg /usr $DISK_AVAIL      				exit 1    		    	fi  		else    			if [ ${DISK_AVAIL_OTHER} -lt ${DISK_REQ} ]; then				disk_msg /export/exec $DISK_AVAIL_OTHER				exit 1			fi    		fi		create_lockfile		install_usr		install_networking		install_debugging		install_system_v		install_manual      		rm -f ${LOCKFILE}      		break;;    	"n")      		echo "Skipping the installation of the ${DEF_RELEASE} US Encryption"      		echo "kit for the ${THISARCH} architecture under ${INSTALL_PATH}."      		break;;    	*)      		echo -n  "Please enter y or n: ";;    	esac  donedone## END OF SERVER PART### Second, let's do it for clients.#ANS=""while truedo  	case ${ANS} in    	"y")      		break ;;    	"n")      		/usr/etc/ldconfig      		echo      		echo "${DEF_RELEASE} US Encryption kit installation completed"      		echo      		echo "Please check the log file, /var/tmp/${DEF_RELEASE}_US_Encryption.log"      		exit 0 ;;    	*)		echo      		echo "Do you wish to check for client support of other architectures?"      		echo -n "Enter y to continue n to quit: "	  	read ANS ;;  	esacdoneTHISARCH=$OTHERARCHBINDIR=$MOUNT_POINT/$PRODUCT_DIR/$THISARCH## Loop through all potential install directories because of matching# libc major and minor numbers.#find_dirsfor INSTALL_PATH in ${DIR}do  echo  echo "Do you wish to install the ${DEF_RELEASE} US Encryption kit under"  echo "${INSTALL_PATH} for the ${THISARCH} architecture?"  echo -n "Please enter y to continue or n to skip this directory: "  while true  do    	#    	# Ask the user if he wants to continue or not.   	#    	read ANS    	echo "${ANS}" >> $LOGFILE    	case ${ANS} in    	"y")      		#      		# Check for available disk space in /export/exec, minimum 2000 kbytes      		#      		if [ ${DISK_AVAIL_OTHER} -lt ${DISK_REQ} ]; then			disk_msg /export/exec $DISK_AVAIL_OTHER        		exit 1      		fi      		#      		# Check and create the lock file      		#		create_lockfile		install_usr		install_networking		install_debugging		install_system_v		install_manual      		rm -f ${LOCKFILE}      		break;;    	"n")      		echo "Skipping the installation of the ${DEF_RELEASE} US Encryption"      		echo "kit for the ${THISARCH} architecture."      		break;;    	*)      		echo -n "Please enter y or n: ";;    	esac  donedone## Installation almost complete.# Notify the ld that libraries got changed.#/usr/etc/ldconfigechoecho "${DEF_RELEASE} US Encryption kit installation completed"echoecho "Please check the log file, /var/tmp/${DEF_RELEASE}_US_Encryption.log"exit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -