#!/bin/sh BASEDIR=`dirname $0` myname=$0 usage () { echo "Usage: $0 -e ethernetid -t host_type -v os_ver -s js_server client_name platform_grp" echo " eg : $0 -e 0:8:20:12:34:56 -t server -s servername clientname sun4u" echo "" echo " host_type is one of server, workst" echo " os_ver is one of 2.6, 7 or 8" echo " js_server is the server to use as a root/install server" echo " platform_grp is one of sun4c, sun4d, sun4m or sun4u" exit 1 } VERSION=2.6 while [ "$1"x != "x" ]; do case $1 in -e) ETHER_ADDR="$2"; if [ ! "$ETHER_ADDR" ]; then usage ; fi shift 2;; -s) SERVER="$2" if [ ! "$SERVER" ]; then usage ; fi shift 2;; -t) MACHINE_TYPE="$2" if [ ! "$MACHINE_TYPE" ]; then usage ; fi shift 2;; -v) VERSION="$2" if [ ! "$VERSION" ]; then usage ; fi shift 2;; [a-zA-Z]*) # must be the client name # ought to be last two things, eh? if [ $# -ne 2 ]; then usage ; fi CLIENT_NAME="$1"; PLATFORM="$2"; shift 2 ;; *) usage;; esac done if [ ! "${ETHER_ADDR}" ]; then echo ${myname}: No Ethernet address supplied echo usage fi if [ ! "${MACHINE_TYPE}" ]; then echo "${myname}: Machine type (server/workstation) must be supplied" echo usage fi if [ ! "${CLIENT_NAME}" ]; then echo ${myname}: No client name given echo usage fi if [ ! "${PLATFORM}" ]; then echo ${myname}: No client platform group given echo usage fi case $MACHINE_TYPE in server|workst) ;; work|workstation) MACHINE_TYPE=workst;; *) echo "Invalid host_type." usage;; esac case $VERSION in 2.6|6) OSVER="sol2.6" OSVERLONG="Solaris_2.6";; 2.7|7) OSVER="sol7" OSVERLONG="Solaris_2.7";; 2.8|8) OSVER="sol8" OSVERLONG="Solaris_8";; *) echo "Invalid OS Version" usage;; esac MYNETMASK=`netstat -rnv | awk ' / 255.255/ && !/lo0/ { print $2;exit } '` if [ "$MYNETMASK" = "255.255.0.0" ]; then NMBITS=16 elif [ "$MYNETMASK" = "255.255.224.0" ]; then NMBITS=19 elif [ "$MYNETMASK" = "255.255.255.0" ]; then NMBITS=24 elif [ "$MYNETMASK" = "255.255.255.224" ]; then NMBITS=27 else echo "Unable to work out netmask correctly. Exiting" exit 2 fi # Find what network we're on NETWORK=`netstat -in | awk ' $1!="Name" && $1!="lo0" { print $3; exit } '` if [ -z "$SERVER" ]; then SERVER=`awk " \\$1==\"${NETWORK}-${OSVER}\" { print \\$3; exit } " < $BASEDIR/Jumpstart_Servers 2> /dev/null` if [ -z "$SERVER" ]; then SERVER=`ypmatch "${NETWORK}-${OSVER}" jsservers 2> /dev/null` if [ -z "$SERVER" ]; then echo "Unable to find Jumpstart server for $OSVER on network $NETWORK" exit 1 fi fi echo "Using $SERVER as Jumpstart server" fi $BASEDIR/${OSVER}/add_install_client -e ${ETHER_ADDR} -s ${SERVER}:/jumpstart/${OSVER} -c ${SERVER}:/jumpstart/${OSVER}/conf/$MACHINE_TYPE -p ${SERVER}:/jumpstart/${OSVER}/conf/${MACHINE_TYPE}/sysidcfg${NMBITS} -r ${SERVER}:/jumpstart/${OSVER}/${OSVERLONG}/Tools/Boot ${CLIENT_NAME} ${PLATFORM}