167 lines
3.5 KiB
Bash
167 lines
3.5 KiB
Bash
#! /bin/sh
|
|
#
|
|
# config_host @(#)config_host 1.1 94/10/31 SMI
|
|
#
|
|
# Some files we access.
|
|
#
|
|
#
|
|
SYS_INFO_FILE="/etc/install/sys_info"
|
|
HOSTS_FILE="/etc/hosts"
|
|
TMP_HOSTS_FILE="/tmp/thosts"
|
|
YP_DIR="/var/yp"
|
|
ZONEINFO_DIR="/usr/lib/zoneinfo"
|
|
DOMAINNAME_FILE="/etc/defaultdomain"
|
|
HOSTNAME_FILE="/etc/hostname"
|
|
|
|
#
|
|
# The default values must be non-null.
|
|
#
|
|
DEFAULT_DOMAINNAME="noname"
|
|
DEFAULT_HOSTNAME="noname"
|
|
DEFAULT_IP_ADDR="192.9.200.1"
|
|
DEFAULT_YPTYPE="none"
|
|
DEFAULT_TIMEZONE="Factory"
|
|
|
|
#
|
|
# field() Macro to extract field values from sys_info file
|
|
#
|
|
field()
|
|
{
|
|
(awk -F= "\$1 ~ /${F}\$/ {print \$2}" ${SYS_INFO_FILE})
|
|
}
|
|
|
|
|
|
umask 22
|
|
|
|
#
|
|
# Test for user = root
|
|
#
|
|
if [ `/usr/ucb/whoami` != "root" ]; then
|
|
echo You must be root to run $0
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Get the necessary variables from the sys_info file
|
|
#
|
|
F="hostname"
|
|
hostname=`field`
|
|
|
|
F="timezone"
|
|
timezone=`field`
|
|
|
|
F="domainname"
|
|
domainname=`field`
|
|
|
|
F="ip"
|
|
ip_addr=`field`
|
|
|
|
F="ether_name"
|
|
ether0=`field`
|
|
|
|
F="yp_type"
|
|
yptype=`field`
|
|
|
|
#
|
|
# Set hostname, domainname, timezone, ip address and networked variables
|
|
#
|
|
yptype=${yptype:=$DEFAULT_YPTYPE}
|
|
|
|
hostname=${hostname:=$DEFAULT_HOSTNAME}
|
|
|
|
domainname=${domainname:=$DEFAULT_DOMAINNAME}
|
|
if [ ${yptype} = "none" ]; then
|
|
domainname=${DEFAULT_DOMAINNAME}
|
|
fi
|
|
|
|
timezone=${timezone:=$DEFAULT_TIMEZONE}
|
|
|
|
ip_addr=${ip_addr:=$DEFAULT_IP_ADDR}
|
|
|
|
networked=$ether0
|
|
|
|
#
|
|
# now, print the working variables if debug flag (debug) given
|
|
#
|
|
if [ $1 ]; then
|
|
if [ $1 = "debug" ]; then
|
|
echo ""
|
|
echo " SYS_INFO_FILE : ${SYS_INFO_FILE}"
|
|
echo " HOSTS_FILE : ${HOSTS_FILE}"
|
|
echo " TMP_HOSTS_FILE : ${TMP_HOSTS_FILE}"
|
|
echo " YP_DIR : ${YP_DIR}"
|
|
echo " ZONEINFO_DIR : ${ZONEINFO_DIR}"
|
|
echo " DOMAINNAME_FILE : ${DOMAINNAME_FILE}"
|
|
echo " HOSTNAME_FILE : ${HOSTNAME_FILE}"
|
|
echo ""
|
|
echo " DEFAULT_DOMAINNAME: ${DEFAULT_DOMAINNAME}"
|
|
echo " DEFAULT_HOSTNAME : ${DEFAULT_HOSTNAME}"
|
|
echo " DEFAULT_IP_ADDR : ${DEFAULT_IP_ADDR}"
|
|
echo " DEFAULT_TIMEZONE : ${DEFAULT_TIMEZONE}"
|
|
echo " DEFAULT_YPTYPE : ${DEFAULT_YPTYPE}"
|
|
echo ""
|
|
echo " hostname : ${hostname}"
|
|
echo " ip_addr : ${ip_addr}"
|
|
echo " ether0 : ${ether0}"
|
|
echo " timezone : ${timezone}"
|
|
echo " yp_type : ${yptype}"
|
|
echo " domainname : ${domainname}"
|
|
echo " networked : ${networked}"
|
|
fi
|
|
fi
|
|
|
|
#
|
|
# Set the hostname
|
|
#
|
|
rm -f ${HOSTNAME_FILE}.??0
|
|
if [ ${networked} ]; then
|
|
echo ${hostname} > ${HOSTNAME_FILE}.${ether0}
|
|
else
|
|
echo ${hostname} > ${HOSTNAME_FILE}.xx0
|
|
fi
|
|
|
|
#
|
|
# Set the domainname.
|
|
#
|
|
echo ${domainname} > ${DOMAINNAME_FILE}
|
|
|
|
#
|
|
# Set/unset the NIS
|
|
#
|
|
# If we unset the NIS, /var/yp is moved to /var/yp- and saved.
|
|
# We test for existence of /var/yp when unsetting the NIS
|
|
# because we don't want to blindly remove /var/yp-. If we did, then
|
|
# running this script twice would remove /var/yp- and there would be
|
|
# nothing left to move back to /var/yp.
|
|
#
|
|
if [ ${yptype} = "none" ]; then
|
|
if [ -d ${YP_DIR} ]; then
|
|
rm -rf ${YP_DIR}-
|
|
mv -f ${YP_DIR} ${YP_DIR}- 2>/dev/null
|
|
fi
|
|
else
|
|
mv -f ${YP_DIR}- ${YP_DIR} 2>/dev/null
|
|
mkdir -p ${YP_DIR}/binding
|
|
#rm -f ${YP_DIR}/binding/*
|
|
chown bin ${YP_DIR} ${YP_DIR}/binding
|
|
chgrp staff ${YP_DIR} ${YP_DIR}/binding
|
|
chmod 2755 ${YP_DIR} ${YP_DIR}/binding
|
|
fi
|
|
|
|
#
|
|
# Set timezone
|
|
#
|
|
cwd=`pwd`
|
|
cd ${ZONEINFO_DIR}
|
|
rm -f ${ZONEINFO_DIR}/localtime- 2>/dev/null
|
|
mv -f ${ZONEINFO_DIR}/localtime ${ZONEINFO_DIR}/localtime- 2>/dev/null
|
|
ln ${timezone} localtime 2>/dev/null
|
|
cd ${cwd}
|
|
|
|
#
|
|
# DONE
|
|
#
|
|
#echo "Completed configuration of ${hostname}"
|
|
|
|
exit 0
|