# PaCkAgE DaTaStReAm
SUNWexplo 1 856
# end of header
                                                                                                                                                                                                                                                                                                                                                                                                                                                                           07070100126c86000081a00000007000000064000000013b01af71000001be00000020000001f800000000000000000000001200000004SUNWexplo/pkginfo PKG=SUNWexplo
NAME=Sun(TM) Explorer Data Collector
ARCH=sparc,i386
PRODNAME=PROACTIVE_SERVICES
PRODVERS=3.5.0
VERSION=3.5.0, FCS
CATEGORY=application
DESC=System Information gatherer for Sun Proactive Services
VENDOR=Enterprise Services, Sun Microsystems Inc.
HOTLINE=See http://www.sun.com/service/contacting/solution.html
BASEDIR=/opt/SUNWexplo
CLASSES=none build cron
EXP_DEFAULTS=/opt/SUNWexplo/etc/default/explorer
PSTAMP=goal20010515163633
  07070100126c85000081a00000007000000064000000013b01aeee000011d400000020000001f800000000000000000000001100000004SUNWexplo/pkgmap  : 1 856
1 d none /var ? ? ?
1 d none /var/spool ? ? ?
1 d none /var/spool/cron ? ? ?
1 d none /var/spool/cron/crontabs ? ? ?
1 e cron /var/spool/cron/crontabs/root 0644 root ? 96 7525 970785860
1 d none bin 0555 root bin
1 f none bin/core_check.sh 0555 root bin 17516 59151 979245490
1 f none bin/diskinfo.i386 0555 root bin 12596 5389 976653716
1 f none bin/diskinfo.sparc 0555 root bin 15624 7635 976558538
1 f none bin/explorer 0555 root bin 4082 63460 985129030
1 f none bin/gzip.i386 0555 root bin 58116 31307 976659474
1 f none bin/gzip.sparc 0555 root bin 68876 52238 976662538
1 f none bin/t3client.i386 0555 root bin 10080 56095 977268620
1 f none bin/t3client.sparc 0555 root bin 10280 20273 977268680
1 i copyright 64 5450 979245492
1 d none etc 0555 root bin
1 f none etc/cmd.txt 0444 root bin 1322 32494 986325934
1 d none etc/default 0555 root bin
1 e build etc/default/explorer 0644 root bin 2602 10637 983918472
1 e build etc/scinput.txt 0400 root bin 531 42426 989539773
1 f none etc/t3files.txt 0444 root bin 123 11760 968946693
1 e build etc/t3input.txt 0400 root bin 531 42097 989539773
1 i i.cron 1002 8797 981487966
1 d none lib 0555 root bin
1 f none lib/exp_check 0555 root bin 2082 19515 986489191
1 f none lib/exp_common 0555 root bin 2034 16879 983906082
1 f none lib/exp_file 0555 root bin 703 55720 983918472
1 f none lib/exp_ftp 0555 root bin 1662 65085 985129030
1 f none lib/exp_mail 0555 root bin 5591 42635 985827508
1 f none lib/exp_main 0555 root bin 11548 46490 989966053
1 f none lib/exp_postproc 0555 root bin 1474 48759 985129030
1 f none lib/exp_tools 0555 root bin 12138 19524 989895546
1 f none lib/exp_transport 0555 root bin 1714 63310 983918472
1 d none lib/locale 0555 root bin
1 d none lib/locale/C 0555 root bin
1 d none lib/locale/C/LC_MESSAGES 0555 root bin
1 f none lib/locale/C/LC_MESSAGES/explorer.mo 0444 root bin 6492 38516 989966059
1 f none lib/locale/C/LC_MESSAGES/explorer.po 0444 root bin 7079 36960 988825669
1 f none lib/uu2b64 0555 root bin 2038 30590 980977376
1 d none man 0555 root bin
1 d none man/man1m 0555 root bin
1 f none man/man1m/explorer.1m 0444 root bin 7059 24695 989539773
1 d none man/man4 0555 root bin
1 f none man/man4/explorer.4 0444 root bin 2991 52251 983918472
1 d none man/man5 0555 root bin
1 f none man/man5/explorer.5 0444 root bin 6931 22452 989539773
1 f none man/windex 0644 root bin 213 19806 972316085
1 x none output 0755 root bin
1 i pkginfo 446 37704 989966193
1 i postinstall 506 40681 981487966
1 i r.cron 440 33571 981490508
1 i request 10595 3505 989539773
1 x none tmp 0755 root bin
1 d none tools 0555 root bin
1 f none tools/cluster 0555 root bin 32459 52042 989539774
1 f none tools/cmdline 0555 root bin 1309 33742 983918472
1 f none tools/cst 0555 root bin 345 29874 989527084
1 f none tools/disks 0555 root bin 4175 18588 989539774
1 f none tools/emc 0555 root bin 324 28006 989539774
1 f none tools/etc 0555 root bin 1414 57824 989527088
1 f none tools/fru 0555 root bin 317 27215 989539774
1 f none tools/init 0555 root bin 354 30237 989527091
1 f none tools/lic 0555 root bin 734 62967 989539774
1 f none tools/lp 0555 root bin 968 15533 989539774
1 f none tools/messages 0555 root bin 773 62000 989527095
1 f none tools/nbu 0555 root bin 5054 49643 989539774
1 f none tools/ndd 0555 root bin 3895 35368 989539774
1 f none tools/netinfo 0555 root bin 1546 64795 989539774
1 f none tools/patch 0555 root bin 631 54320 989527100
1 f none tools/photon 0555 root bin 1912 28286 989539774
1 f none tools/pkg 0555 root bin 909 12919 989527102
1 f none tools/sbu 0555 root bin 1427 59884 989539774
1 f none tools/scextended 0555 root bin 5451 25228 989895546
1 f none tools/sds 0555 root bin 1563 441 989539774
1 f none tools/sf15000-ndd 0555 root bin 1352 38164 989539775
1 f none tools/sf15000-sc 0555 root bin 3482 14956 989966053
1 f none tools/sonoma 0555 root bin 2092 41259 989539775
1 f none tools/ssa 0555 root bin 1281 41357 989539775
1 f none tools/ssp 0555 root bin 5580 3162 989539775
1 f none tools/stortools 0555 root bin 403 35454 989539775
1 f none tools/sysconfig 0555 root bin 6471 11133 989527121
1 f none tools/t3 0555 root bin 1274 35311 989539775
1 f none tools/t3extended 0555 root bin 7249 24122 989895546
1 f none tools/test 0555 root bin 5773 39792 989525739
1 f none tools/u4ft 0555 root bin 3344 23056 989527126
1 f none tools/var 0555 root bin 686 57742 989527127
1 f none tools/vtsst 0555 root bin 1443 51812 989539775
1 f none tools/vxfs 0555 root bin 917 9270 989539775
1 f none tools/vxvm 0555 root bin 5382 45344 989539775
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!                                                                                                                                                                                                                                                    07070100126c86000081a00000007000000064000000013b01af71000001be00000020000001f800000000000000000000000800000004pkginfo   PKG=SUNWexplo
NAME=Sun(TM) Explorer Data Collector
ARCH=sparc,i386
PRODNAME=PROACTIVE_SERVICES
PRODVERS=3.5.0
VERSION=3.5.0, FCS
CATEGORY=application
DESC=System Information gatherer for Sun Proactive Services
VENDOR=Enterprise Services, Sun Microsystems Inc.
HOTLINE=See http://www.sun.com/service/contacting/solution.html
BASEDIR=/opt/SUNWexplo
CLASSES=none build cron
EXP_DEFAULTS=/opt/SUNWexplo/etc/default/explorer
PSTAMP=goal20010515163633
  07070100126c85000081a00000007000000064000000013b01aeee000011d400000020000001f800000000000000000000000700000004pkgmap    : 1 856
1 d none /var ? ? ?
1 d none /var/spool ? ? ?
1 d none /var/spool/cron ? ? ?
1 d none /var/spool/cron/crontabs ? ? ?
1 e cron /var/spool/cron/crontabs/root 0644 root ? 96 7525 970785860
1 d none bin 0555 root bin
1 f none bin/core_check.sh 0555 root bin 17516 59151 979245490
1 f none bin/diskinfo.i386 0555 root bin 12596 5389 976653716
1 f none bin/diskinfo.sparc 0555 root bin 15624 7635 976558538
1 f none bin/explorer 0555 root bin 4082 63460 985129030
1 f none bin/gzip.i386 0555 root bin 58116 31307 976659474
1 f none bin/gzip.sparc 0555 root bin 68876 52238 976662538
1 f none bin/t3client.i386 0555 root bin 10080 56095 977268620
1 f none bin/t3client.sparc 0555 root bin 10280 20273 977268680
1 i copyright 64 5450 979245492
1 d none etc 0555 root bin
1 f none etc/cmd.txt 0444 root bin 1322 32494 986325934
1 d none etc/default 0555 root bin
1 e build etc/default/explorer 0644 root bin 2602 10637 983918472
1 e build etc/scinput.txt 0400 root bin 531 42426 989539773
1 f none etc/t3files.txt 0444 root bin 123 11760 968946693
1 e build etc/t3input.txt 0400 root bin 531 42097 989539773
1 i i.cron 1002 8797 981487966
1 d none lib 0555 root bin
1 f none lib/exp_check 0555 root bin 2082 19515 986489191
1 f none lib/exp_common 0555 root bin 2034 16879 983906082
1 f none lib/exp_file 0555 root bin 703 55720 983918472
1 f none lib/exp_ftp 0555 root bin 1662 65085 985129030
1 f none lib/exp_mail 0555 root bin 5591 42635 985827508
1 f none lib/exp_main 0555 root bin 11548 46490 989966053
1 f none lib/exp_postproc 0555 root bin 1474 48759 985129030
1 f none lib/exp_tools 0555 root bin 12138 19524 989895546
1 f none lib/exp_transport 0555 root bin 1714 63310 983918472
1 d none lib/locale 0555 root bin
1 d none lib/locale/C 0555 root bin
1 d none lib/locale/C/LC_MESSAGES 0555 root bin
1 f none lib/locale/C/LC_MESSAGES/explorer.mo 0444 root bin 6492 38516 989966059
1 f none lib/locale/C/LC_MESSAGES/explorer.po 0444 root bin 7079 36960 988825669
1 f none lib/uu2b64 0555 root bin 2038 30590 980977376
1 d none man 0555 root bin
1 d none man/man1m 0555 root bin
1 f none man/man1m/explorer.1m 0444 root bin 7059 24695 989539773
1 d none man/man4 0555 root bin
1 f none man/man4/explorer.4 0444 root bin 2991 52251 983918472
1 d none man/man5 0555 root bin
1 f none man/man5/explorer.5 0444 root bin 6931 22452 989539773
1 f none man/windex 0644 root bin 213 19806 972316085
1 x none output 0755 root bin
1 i pkginfo 446 37704 989966193
1 i postinstall 506 40681 981487966
1 i r.cron 440 33571 981490508
1 i request 10595 3505 989539773
1 x none tmp 0755 root bin
1 d none tools 0555 root bin
1 f none tools/cluster 0555 root bin 32459 52042 989539774
1 f none tools/cmdline 0555 root bin 1309 33742 983918472
1 f none tools/cst 0555 root bin 345 29874 989527084
1 f none tools/disks 0555 root bin 4175 18588 989539774
1 f none tools/emc 0555 root bin 324 28006 989539774
1 f none tools/etc 0555 root bin 1414 57824 989527088
1 f none tools/fru 0555 root bin 317 27215 989539774
1 f none tools/init 0555 root bin 354 30237 989527091
1 f none tools/lic 0555 root bin 734 62967 989539774
1 f none tools/lp 0555 root bin 968 15533 989539774
1 f none tools/messages 0555 root bin 773 62000 989527095
1 f none tools/nbu 0555 root bin 5054 49643 989539774
1 f none tools/ndd 0555 root bin 3895 35368 989539774
1 f none tools/netinfo 0555 root bin 1546 64795 989539774
1 f none tools/patch 0555 root bin 631 54320 989527100
1 f none tools/photon 0555 root bin 1912 28286 989539774
1 f none tools/pkg 0555 root bin 909 12919 989527102
1 f none tools/sbu 0555 root bin 1427 59884 989539774
1 f none tools/scextended 0555 root bin 5451 25228 989895546
1 f none tools/sds 0555 root bin 1563 441 989539774
1 f none tools/sf15000-ndd 0555 root bin 1352 38164 989539775
1 f none tools/sf15000-sc 0555 root bin 3482 14956 989966053
1 f none tools/sonoma 0555 root bin 2092 41259 989539775
1 f none tools/ssa 0555 root bin 1281 41357 989539775
1 f none tools/ssp 0555 root bin 5580 3162 989539775
1 f none tools/stortools 0555 root bin 403 35454 989539775
1 f none tools/sysconfig 0555 root bin 6471 11133 989527121
1 f none tools/t3 0555 root bin 1274 35311 989539775
1 f none tools/t3extended 0555 root bin 7249 24122 989895546
1 f none tools/test 0555 root bin 5773 39792 989525739
1 f none tools/u4ft 0555 root bin 3344 23056 989527126
1 f none tools/var 0555 root bin 686 57742 989527127
1 f none tools/vtsst 0555 root bin 1443 51812 989539775
1 f none tools/vxfs 0555 root bin 917 9270 989539775
1 f none tools/vxvm 0555 root bin 5382 45344 989539775
07070100035f96000041e80000007000000064000000023b01aef00000000000000020000001f800000000000000000000000800000004install   07070100035fb8000081a00000007000000064000000013a5e19b40000004000000020000001f800000000000000000000001200000004install/copyright Copyright 1996-2001 Sun Microsystems, Inc.
All rights reserved.
07070100035fbb000081a00000007000000064000000013a80515e000003ea00000020000001f800000000000000000000000f00000004install/i.cron    #
#  cron class install script for explorer3
#  $Id: //depot/dev/proactive/explorer3/pkg/i.cron#4 $
#
if [ "${EXP_CRONTAB_RUN}" = "yes" -a -z "${PKG_INSTALL_ROOT}" ]; then
    # Escape / in EXP_HOME
    PAT=`echo ${EXP_HOME} | sed 's!\/!\\\/!g'`
    HOUR=`echo ${EXP_CRONTAB_HOUR} | sed 's!\/!\\\/!g'`
    MIN=`echo ${EXP_CRONTAB_MINUTE} | sed 's!\/!\\\/!g'`
    DAY=`echo ${EXP_CRONTAB_DAY} | sed 's!\/!\\\/!g'`

    while read src dest
    do
	# Remove old instances
	crontab -l | sed -e "/.*#${PKGINST}$/d" > /tmp/$$crontab

	# Add comment to new instance and expand variables
	sed -e "s/\${EXP_CRONTAB_HOUR}/${EXP_CRONTAB_HOUR}/g" \
	    -e "s/\${EXP_CRONTAB_MINUTE}/${EXP_CRONTAB_MINUTE}/g" \
	    -e "s/\${EXP_CRONTAB_DAY}/${EXP_CRONTAB_DAY}/g" \
	    -e "s/\${EXP_HOME}/${PAT}/g" \
	    -e "s/$/ # ${PKGINST}/" \
	    $src >> /tmp/$$crontab

	# Update crontab
	crontab /tmp/$$crontab

	# Cleanup
	rm -f /tmp/$$crontab
    done
else
    while read src dest
    do
        touch $dest
    done
fi
  07070100035fbc000081a00000007000000064000000013a80515e000001fa00000020000001f800000000000000000000001400000004install/postinstall   #
#  postinstall script for explorer3
#  $Id: //depot/dev/proactive/explorer3/pkg/postinstall#6 $
#
if [ "${EXP_RUN}" = "yes" ]
then
    echo "Executing '${EXP_HOME}/bin/explorer -q -e'"
    ${EXP_HOME}/bin/explorer -q -e
fi

if [ -f "${PKG_INSTALL_ROOT}/etc/default/explorer" ]
then
    echo "Removing old ${PKG_INSTALL_ROOT}/etc/default/explorer file"
    rm -f ${PKG_INSTALL_ROOT}/etc/default/explorer
fi

if [ -d "${BASEDIR}/man" ]
then
    echo "Creating man index"
    catman -w -M ${BASEDIR}/man
fi
  07070100035fbd000081a00000007000000064000000013a805b4c000001b800000020000001f800000000000000000000000f00000004install/r.cron    #
#  cron class remove script for explorer3
#  $Id: //depot/dev/proactive/explorer3/pkg/r.cron#5 $
#
if [ -z "${PKG_INSTALL_ROOT}" ]
then
    while read path
    do
	# Remove old instances
	crontab -l | sed -e "/# ${PKGINST}$/d" > /tmp/$$crontab

	# Update crontab
	crontab /tmp/$$crontab

	# Cleanup
	rm -f /tmp/$$crontab
    done
else
    while read path
    do
	# Remove if empty
	if [ ! -s "$path" ]
	then
	    rm $path
	fi
    done
fi
07070100035fbe000081a00000007000000064000000013afb2dbd0000296300000020000001f800000000000000000000001000000004install/request   #
#  request script for explorer3
#  $Id: //depot/dev/proactive/explorer3/pkg/request#17 $
#
AMER=explorer-database-americas@sun.com
APAC=explorer-database-apac@sun.com
EMEA=explorer-database-emea@sun.com

#
#  Functions
#
prompt () {
    VAR=$"$1"
    VAL=`eval echo ${VAR}`

    # Display prompt
    echo "$2"
    echo "[${VAL}]: \c"

    # Read response
    read ANSWER

    # Accept crlf as default
    if [ -z "${ANSWER}" ]; then
	ANSWER=${VAL}
    fi

    # Set (or unset) variable
    eval "$1=\"${ANSWER}\""
    if [ "${ANSWER}" = '-' ]; then
	eval "unset $1"
    fi
}

yorn () {
    VAR=$"$1"

    while :
    do
	# Display prompt
	echo "$2"
	echo "[y,n] \c"

	# Read response
	read ANSWER

	# Acceptable responses are y|yes|n|no
	case `echo "${ANSWER}" | tr '[A-Z]' '[a-z]'` in
	    yes | y)
		ANSWER=yes
		break
		;;
	    no | n)
		ANSWER=no
		break
		;;
	    *)
		echo "Please answer y, yes, n or no"
		continue
		;;
	esac

    done

    # Set variable
    eval "$1=\"${ANSWER}\""
}

validate () {
    VAR=$"$1"
    VAL=`eval echo ${VAR}`

    # Loop until value is within acceptable range
    CNT=`expr $2 - 1`
    while [ "${CNT}" -lt "$2" -o "${CNT}" -gt "$3" ]; do
	# Display prompt
	echo "$4"
	if [ -n "${VAL}" ]; then
	    echo "[${VAL}]: \c"
	fi

	# Read response
	read ANSWER

	# Accept clrf if default value exists
	if [ -z "${ANSWER}" ] && [ -n "${VAL}" ]; then
	    ANSWER=${VAL}
	fi

	# Set loop variable to answer
	if [ -z "${ANSWER}" ]; then
	    CNT=`expr $2 - 1`
	else
	    CNT=${ANSWER}
	fi
    done

    # Set variable
    eval "$1=\"$CNT\""
}

#
# Disclaimer
#
echo ""
echo "For any prompt, defaults appear in square brakets, e.g. [default]."
echo "Pressing "return" without entering any data will take the default."
echo "You may specify an empty reply, as opposed to the default, by replying"
echo "with a single dash, '-'."

#
#  Request data
#

# Prompt for installation location
while true
do
    echo ""
    prompt BASEDIR "Where should this package be installed? \c"

    # Make sure BASEDIR isn't NULL
    if [ -z "${BASEDIR}" ]; then
	continue
    else
	break
    fi
done

# Make sure EXP_DEFAULTS is set
if [ -z "${EXP_DEFAULTS}" ]
then
    EXP_DEFAULTS=${BASEDIR}/etc/default/explorer
fi

# Check for previous install defaults file (shell style)
CINFO=${PKG_INSTALL_ROOT}/etc/default/explorer
if [ -f "${PKG_INSTALL_ROOT}/${EXP_DEFAULTS}" ]
then
    test -r "${EXP_DEFAULTS}" && . ${EXP_DEFAULTS}

# Check for old style defaults file only if new style not available
elif [ -f "${CINFO}" ]
then
    getField () {
        egrep "$1" ${CINFO} | cut -f2- -d":" | sed -e 's/^ //g'
    }

    # Company information
    EXP_CUSTOMER_NAME=`getField "Customer Name"`
    EXP_CONTRACT_ID=`getField "Contract ID"`
    EXP_EMAIL=`getField "Email results to"`

    # System information
    EXP_SERIAL=`getField "System Serial number"`

    # Contact information
    EXP_USER_NAME=`getField "User Name"`
    EXP_USER_EMAIL=`getField "User e-mail"`
    EXP_PHONE=`getField "User Phone #"`
    EXP_ADDRESS_1=`getField "Address line 1"`
    EXP_ADDRESS_2=`getField "Address line 2"`
    EXP_ADDRESS_CITY=`getField "City"`
    EXP_ADDRESS_STATE=`getField "State"`
    EXP_ADDRESS_ZIP=`getField "Zip Code"`
    EXP_ADDRESS_COUNTRY=`getField "Country"`
fi

# Override EXP_HOME and EXP_DEF_VERSION
EXP_HOME=${BASEDIR}
EXP_DEF_VERSION="${VERSION}"
if [ "${BASEDIR}" = "/" ]
then
    EXP_LIB=/usr/lib/explorer
else
    EXP_LIB=${BASEDIR}/lib
fi

# Transform EXP_SERIAL_HOSTID to EXP_SERIAL if don't already have one
HOSTID=`hostid`
if [ -z "${EXP_SERIAL}" ]
then
    EXP_SERIAL=`eval echo $"EXP_SERIAL_$HOSTID"`
fi

# Use VARS variable to determine what is used in the request script
VARS="EXP_DEFAULTS \
EXP_DEF_VERSION \
EXP_SUBJECT \
EXP_PATH \
EXP_SERIAL_$HOSTID \
EXP_CUSTOMER_NAME \
EXP_CONTRACT_ID \
EXP_EMAIL \
EXP_EMAIL_SPLIT \
EXP_USER_NAME \
EXP_USER_EMAIL \
EXP_PHONE \
EXP_ADDRESS_1 \
EXP_ADDRESS_2 \
EXP_ADDRESS_CITY \
EXP_ADDRESS_STATE \
EXP_ADDRESS_ZIP \
EXP_ADDRESS_COUNTRY \
EXP_HOME \
EXP_LIB \
EXP_GEO \
EXP_REPLY \
EXP_WHICH \
EXP_CRON_WHICH \
EXP_CRONTAB_RUN \
EXP_CRONTAB_HOUR \
EXP_CRONTAB_MINUTE \
EXP_CRONTAB_DAY"

# Get customer information
DONE=no
while [ -n "$DONE" ] && expr "X$DONE" : "X[Nn]" >/dev/null
do
    echo ""
    # Company information
    prompt EXP_CUSTOMER_NAME   "Company name \c"
    prompt EXP_CONTRACT_ID     "Contract ID \c"

    # System information
    prompt EXP_SERIAL          "System serial number \c"

    # Contact information
    prompt EXP_USER_NAME       "Contact name \c"
    prompt EXP_USER_EMAIL      "Contact email address \c"
    prompt EXP_PHONE           "Phone number \c"
    prompt EXP_ADDRESS_1       "Address (line 1) \c"
    prompt EXP_ADDRESS_2       "Address (line 2) \c"
    prompt EXP_ADDRESS_CITY    "City \c"
    prompt EXP_ADDRESS_STATE   "State \c"
    prompt EXP_ADDRESS_ZIP     "Zip \c"
    prompt EXP_ADDRESS_COUNTRY "Country \c"

    # GEO
    OK=0
    while [ "${OK}" -eq 0 ]
    do
      	prompt EXP_GEO "
Geographic Region
1 - AMERICAS - North and South America
2 - EMEA	- Europe, Middle-east and Africa
3 - APAC	- Asia, Pacific
\c"
   	case "${EXP_GEO}" in
            3|AP*|Ap*|ap*)
		EXP_GEO="APAC"
		MAIL=${APAC}
		OK=1
		;;
            2|EM*|Em*|em*)
		EXP_GEO="EMEA"
		MAIL=${EMEA}
		OK=1
		;;
            1|AM*|Am*|am*)
		EXP_GEO="AMERICAS"
		MAIL=${AMER}
		OK=1
		;;
            *)
		echo "Please select 1, 2 or 3"
		unset EXP_GEO
		;;
	esac
    done

    # Send to Sun?
    yorn SUN "
Automatic Email Submission

Would you like all explorer output to be sent to:
    ${MAIL}
at the completion of explorer when -mail or -e is specified?"

    # Remove database address from EXP_EMAIL
    if [ -n "${EXP_EMAIL}" ]
    then
	EMAIL=`echo ${EXP_EMAIL} | sed -e "s/${MAIL}//" -e "s/^,//" -e "s/,$//"`
    fi

    # Alternate addresses for mail?
    prompt EMAIL "
Alternate Email Addresses

Would you like explorer output to be sent to alternate email
addresses at the completion of explorer?  If not, enter a single "-"
only for your reply.

To enter multiple addresses, seperate them with a comma (,).
\c"

    # If select to send to Sun, add MAIL to EXP_EMAIL
    if [ "${SUN}" = "yes" ]
    then
	if [ -z "${EMAIL}" ]
	then
	    EXP_EMAIL="${MAIL}"
	else
	    EXP_EMAIL="${MAIL},${EMAIL}"
	fi
    else
        EXP_EMAIL="${EMAIL}"
    fi

    # Set default reply address to user email address
    test -z "${EXP_REPLY}" && eval "EXP_REPLY=${EXP_USER_EMAIL}"

    # Explorer reply address
    echo ""
    prompt EXP_REPLY "Return address for explorer email output \c"

    # Default environment values
    [ -z "${EXP_WHICH}" ] &&       EXP_WHICH=default
    [ -z "${EXP_CRON_WHICH}" ] &&  EXP_CRON_WHICH="adm,lp,root,sys,uucp"
    [ -z "${EXP_EMAIL_SPLIT}" ] && EXP_EMAIL_SPLIT=4194304
    [ -z "${EXP_SUBJECT}" ] &&     EXP_SUBJECT="%F"
    [ -z "${EXP_PATH}" ] &&        EXP_PATH="/usr/bin:/usr/sbin"

    # Done, finish up
    echo ""
    DONE=Yes
    yorn DONE "You have answered:
             Company name: ${EXP_CUSTOMER_NAME}
              Contract ID: ${EXP_CONTRACT_ID}

     System serial number: ${EXP_SERIAL}

             Contact name: ${EXP_USER_NAME}
    Contact email address: ${EXP_USER_EMAIL}
             Phone number: ${EXP_PHONE}
         Address (line 1): ${EXP_ADDRESS_1}
         Address (line 2): ${EXP_ADDRESS_2}
                     City: ${EXP_ADDRESS_CITY}
                    State: ${EXP_ADDRESS_STATE}
                      Zip: ${EXP_ADDRESS_ZIP}
                  Country: ${EXP_ADDRESS_COUNTRY}

                Geography: ${EXP_GEO}
           Mail output to: ${EXP_EMAIL}
         Mail output from: ${EXP_REPLY}

    Are these values okay? \c"

    if [ "${DONE}" = no ]; then
	yorn ABORT "Abort install? \c"
	if [ "${ABORT}" = yes ]; then
	    exit 1
	fi
    fi
done

# If this is not a remote install, check cron and see if 
# explorer should be run
if [ -z "${PKG_INSTALL_ROOT}" ]
then
    yorn EXP_CRONTAB_RUN "
We recommend running explorer once a week and emailing the results
to the explorer database.  If you agree with this, the root crontab
will be modified.

Do you wish to run explorer once a week? \c"

    if [ "${EXP_CRONTAB_RUN}" = yes ]; then
	validate EXP_CRONTAB_HOUR   0 23 "At which hour would you like this to run (0 to 23): \c"
	validate EXP_CRONTAB_MINUTE 0 59 "At which minute would you like this to run (0 to 59): \c"
	validate EXP_CRONTAB_DAY    0 6  "On which day would you like this to run (0-6 with 0=Sunday): \c"
    fi

    echo ""
    echo "If this is a new install of explorer, please run explorer and"
    echo "mail the results to Sun."
    echo ""
    echo "The command to do this would be:"
    echo ""
    echo "${EXP_HOME}/bin/explorer -q -e"
    echo ""

    yorn EXP_RUN "Would you like to do this now? \c"
else
    EXP_CRONTAB_RUN=no
    EXP_RUN=no
fi

# Make environment variables available to installation service
cat >>$1 <<!
BASEDIR="${BASEDIR}"
EXP_DEFAULTS="${EXP_DEFAULTS}"
EXP_DEF_VERSION="${EXP_DEF_VERSION}"
EXP_CUSTOMER_NAME="${EXP_CUSTOMER_NAME}"
EXP_CONTRACT_ID="${EXP_CONTRACT_ID}"
EXP_EMAIL="${EXP_EMAIL}"
EXP_EMAIL_SPLIT="${EXP_EMAIL_SPLIT}"
EXP_USER_NAME="${EXP_USER_NAME}"
EXP_USER_EMAIL="${EXP_USER_EMAIL}"
EXP_PHONE="${EXP_PHONE}"
EXP_ADDRESS_1="${EXP_ADDRESS_1}"
EXP_ADDRESS_2="${EXP_ADDRESS_2}"
EXP_ADDRESS_CITY="${EXP_ADDRESS_CITY}"
EXP_ADDRESS_STATE="${EXP_ADDRESS_STATE}"
EXP_ADDRESS_ZIP="${EXP_ADDRESS_ZIP}"
EXP_ADDRESS_COUNTRY="${EXP_ADDRESS_COUNTRY}"
EXP_HOME="${EXP_HOME}"
EXP_LIB="${EXP_LIB}"
EXP_GEO="${EXP_GEO}"
EXP_REPLY="${EXP_REPLY}"
EXP_WHICH="${EXP_WHICH}"
EXP_CRON_WHICH="${EXP_CRON_WHICH}"
EXP_CRONTAB_RUN="${EXP_CRONTAB_RUN}"
EXP_CRONTAB_HOUR="${EXP_CRONTAB_HOUR}"
EXP_CRONTAB_MINUTE="${EXP_CRONTAB_MINUTE}"
EXP_CRONTAB_DAY="${EXP_CRONTAB_DAY}"
EXP_RUN="${EXP_RUN}"
EXP_SUBJECT="${EXP_SUBJECT}"
EXP_PATH="${EXP_PATH}"
!

# Transform EXP_SERIAL to EXP_SERIAL_HOSTID
eval "EXP_SERIAL_$HOSTID=${EXP_SERIAL}"

# Store serial number for this HOSTID
echo "EXP_SERIAL_$HOSTID=\"${EXP_SERIAL}\"" >>$1
unset EXP_SERIAL

# See if other variables are in defaults file and make available
if [ -f "${PKG_INSTALL_ROOT}/${EXP_DEFAULTS}" ]
then
    cat ${EXP_DEFAULTS} | while read line
    do
	# Skip comments and blank lines
	echo $line | sed -e 's/^ *//' -e 's/ *$//' | egrep -s -e '^#' && continue
	echo $line | egrep -s -e '^$' && continue

	# Get the variable
        VAR=`echo $line | awk -F= '{ print $1 }'`

	# Only print lines that aren't in VARS
	# eval test -z \"\$\{$VAR\}\" && echo $line >>$1
	echo $VARS | egrep -s -e "$VAR" || echo $line >>$1
    done
fi

exit 0
 070701000b7104000041e80000007000000064000000073b01aef00000000000000020000001f800000000000000000000000600000004reloc 07070100106fc4000041e80000007000000064000000023b01aeee0000000000000020000001f800000000000000000000000a00000004reloc/bin 07070100106fc5000081a00000007000000064000000013a5e19b20000446c00000020000001f800000000000000000000001800000004reloc/bin/core_check.sh   #!/bin/sh

# 
# Copyright 28 Dec 1999, Sun Microsystems, Inc. All Rights Reserved
# 	Drew Gonczi -- drew.gonczi@east.sun.com
#       evaluate ability of operating system to generate crashdumps
#
# 
# Version 1.0
# Released 6-Jan-2000
#
# space for revision information
# 
# 1/7/2000 - 1.1
#   - fixed bug in space availability for systems with undetermined savecore directory
# 1/7/2000 - 1.2
#   - now prints instructions for running savecore manually in case no*:yes* of immediate remedies section
#   - was not getting correct dump size for 2.6 and 2.5.1.  addded code to try secondary 
#     methods of getting the dump size if the size is near 2G-bytes or over
#   - made lots of changes to getting dump size from kernel in 2.7 and 2.8
# 2/2/2000 - 1.3
#   - RFE implemented to display host information and date
# 5/5/2000 - 1.4
#   - BUG displays wrong patch for 2.6 in CDENABLED line -- cosmetic
#   - RFE better explain ways to address veritas dump devices (Pam Skillman)
#   - BUG 2.7 system w/16gb dump device and KU-08 reports dumpvp_size = 0
# 6/16/2000 - 1.5
#   - RFE warn if insufficient free space in savecore directory (SFR-4.0)
#   - RFE email notification of deficiencies (SFR-6.0)
#   - RFE syslog findings to appropriate maintenance log (SFR-10.0,-10.1; SPR-2.0)
#   - RFE support - added arguments:
#     -l                   : syslog status to daemon.info and daemon.notice
#     -L facility[.level]  : syslog status to facility.info and facility.notice
#                            unless a level is given in which case, log to facility.level
#     -M <email addresses> : notify this email addr.  must contain no spaces.  use , to
#                            separate multiple addrs. 
#     -m <email addresses> : add this email address to the list
#     -q                   : do not generate any output.  useful with -[lL] or -[mM]
#     suggested useage: run from cron as "core_check -q -l -M root"
# 12/1/2000 - 1.6
#   - BUG core_check was leaving files in /tmp [core_check.deficiencies.$$ and core_check.errors.$$ ]
#   - BUG core_check was behaving improperly with 32-bit Solaris 8 kernels
#   - BUG core_check was behaving improperly with 64-bit Solaris 7 kernels
#   - RFE changed message if available space in filesystem for crashdumps is less than the
#         maximum size core that can be captured

## Known Bugs / Issues


## Thanks for the concept to script this evaluation go to Edgar Ortiz 
## and the rest of the Florida/Southern Region Tech Support Staff

## Many Thanks to the Q-A from Steve Comer and Pam Skillman


umask 077
VERSION="1.6"
RELEASE="18-Dec-2000"

> /tmp/core_check.deficiencies.$$
> /tmp/core_check.errors.$$

show ()
{
unset NSHOW
case "$1" in
	-d) ## deficiency
		shift
		echo "$*" >> /tmp/core_check.deficiencies.$$
		;;
	-D) ## deficiency no display
		shift
		echo "$*" >> /tmp/core_check.deficiencies.$$
		NSHOW=y
		;;
	-e) ## error
		shift
		echo "$*" >> /tmp/core_check.errors.$$
		;;
	-E) ## error no display
		shift
		echo "$*" >> /tmp/core_check.errors.$$
		NSHOW=y
		;;
esac
[ -z "${NSHOW}" -a -z "${QUIET}" ] && echo "$*"
return 0
}
		
genargs()
{
while [ $# -gt 0 ]; do
	case "$1" in
		-M) NOTIFY="${2}"
		    shift
		    ;;
		-m) if [ -n "${NOTIFY}" ]; then
		       NOTIFY="${NOTIFY},${2}"
		    else
		       NOTIFY="${2}"
		    fi
		    shift
		    ;;
		-l) LOGINFO=daemon.info
		    LOGNOTI=daemon.notice
		    ;;
		-L) FAC=`expr "${2}" : '^\([^.]*\)'`
		    LVL=`expr "${2}" : '[^.]*\.\(.*\)'`
		    LOGINFO="${FAC:-daemon}.${LVL:-info}"
		    LOGNOTI="${FAC:-daemon}.${LVL:-notice}"
		    shift
		    ;;
		-q*) QUIET=y
		     ;;
	esac
	shift
done
}

#vxvtoceval c#t#d# sdoffset sdlen sdname dgrp
vxvtoceval()
{
if [ $# -ne 5 ]; then
	VTERR="expected 5 args got $#: $*"
	return 1
fi
d=`basename $1`
di=`expr "${d}" : '^\([^s]*\)'`
if [ ! -b /dev/dsk/${di}s2 ]; then
	VTERR="not block device: /dev/dsk/${di}s2"
	return 1
fi
prtvtoc /dev/dsk/${di}s2 2>/dev/null | grep -v '^*' >/tmp/vt.${di}.$$
puroff=`awk '$2 == 14 {print $4}' /tmp/vt.${di}.$$`
if [ -z "${puroff}" ]; then
	VTERR="not a veritas disk ${di}"
	rm -f /tmp/vt.${di}.$$
	return 1
fi
rsdoff=`expr "${2}" + "${puroff}"`
slc=`awk 'st==0 && $4 == '"${rsdoff}"' && $5 == '"${3}"' {print $1; st=1}' /tmp/vt.${di}.$$`
if [ -n "${slc}" ]; then
	VXMKSLICE=""
	VXSETDUMP="/dev/dsk/${di}s${slc}"
	rm -f /tmp/vt.${di}.$$
	return 0
fi
slc=`awk 'BEGIN {frslc=0} $1 > frslc {print frslc; frslc=9} $1 <= frslc {frslc=frslc+1} END {if (frslc<8) {print frslc}}' /tmp/vt.${di}.$$`
if [ -z "${slc}" ]; then
	VTERR="no free slices on ${di}"
	rm -f /tmp/vt.${di}.$$
	return 1
fi
rm -f /tmp/vt.${di}.$$
VXMKSLICE="/usr/lib/vxvm/bin/vxmksdpart -g ${5} ${4} ${slc}"
VXSETDUMP="/dev/dsk/${di}s${slc}"
return 0
}

PATH=/usr/sbin:/usr/bin:/usr/opt/SUNWmd/sbin

genargs $*

show "+-----"
show "| Core File Generation Evaluator: ${VERSION} released ${RELEASE}"
show "+-----"
show ""
show "Hostname : `uname -n`"
show "Hostid   : `hostid`"
show "Date     : `date`"
show "uname    : `uname -a`"
show ""

SVCENABLED=undetermined
CDENABLED=undetermined
SVCDIR="[ undetermined ]"
MAXCORE=4194304   # num of 512-byte blocks to get 2 g-bytes
REMAXCORE=4194300   # num of 512-byte blocks to get near 2 g-bytes

##
## Determine location of crash dump related items
##

KMODE=32
OPTISA=`optisa \`isalist\``
[ `expr "${OPTISA}" : '^sparcv9.*'` -ge 5 ] && KMODE=64

REL=`uname -r`

case "${REL}:${KMODE}" in
	5.8*:64) VPTOSP=48; SPTOSZ=a8; DVPSZ="*dumpvp_size";;     # solaris 8 64-bit kernel
	5.8*:32) VPTOSP=2c; SPTOSZ=6c; DVPSZ="*(dumpvp_size+4)";; # solaris 8 32-bit kernel
	5.7*:64) VPTOSP=48; SPTOSZ=a0; DVPSZ="*dumpvp_size";;     # solaris 7 64-bit kernel
	5.7*:32) VPTOSP=2c; SPTOSZ=64; DVPSZ="*(dumpvp_size+4)";; # solaris 7 32-bit kernel
esac

case "${REL}" in
	5.7*|5.8*)
		DUMPFILE=`dumpadm | egrep -i 'dump.*device' | sed 's;[^/]*;;' | awk '{print $1}'`
		SVCENABLED=`dumpadm | egrep -i 'savecore.*enabled' | awk '{print $NF}'`
		SVCDIR=`dumpadm | egrep -i 'savecore.*directory' | awk '{print $NF}'`

		# first try using dumpvp_size

		DUMPSZ=`echo "${DVPSZ}%200=D" | adb -k | tail -2 | head -1 | awk '{print $NF}'`
		if [ "${DUMPSZ}" -eq 0 ]; then   # try alternate method
			# dumpvp_size method failed ... try the long way vnode->data=snode->size
			DUMPSZ=`echo "*(*(*dumpvp+${VPTOSP})+${SPTOSZ})%200=e" | adb -k | tail -2 | head -1 | awk '{print $NF}'`
		fi
		if [ "${DUMPSZ}" -eq 0 -a "${REL}" = "5.7" ]; then 
			## okay ... well now what
			## did the 2.7 dumpvp_size finally become a ptr to 64bits
			DUMPSZ=`echo "*dumpvp_size%200=e" | adb -k | tail -2 | head -1 | awk '{print $NF}'`
		fi
		if [ "${DUMPSZ}" -eq 0 ]; then 
			show "Apparently, there is a limitation in $0 that prevents"
			show "this script from determinig the size of your dump device"
			show "from the kernel directly"
			show ""
			show "To compensate, the script will use the size reported in"
			show "/var/adm/messages, if possible."
			show ""
			show "Please forward the output of this script to:"
			show "  drew.gonczi@east.sun.com"
			set -- `egrep 'dump on.*size' /var/adm/messages | tail -1`
			if [ $# -eq 0 ]; then
				set -- `egrep 'dump on.*size' /var/adm/messages* | head -1`
			fi
			while [ $# -ge 1 -a "$1" != "size" ]; do
				shift
			done
			shift
			DUMPSZ=`expr "$1" : '^\([0-9]*\)'`
			if [ -n "${DUMPSZ}" ]; then
				if [ $# -eq 2 ]; then
					sf=$2
				else
					sf=`expr "$1" : '^[0-9]*\([A-Za-z]*\)'`
				fi
				case "${sf}" in
					[gG]*) DUMPSZ=`expr ${DUMPSZ} '*' 2097152` ;;
					[mM]*) DUMPSZ=`expr ${DUMPSZ} '*' 2048` ;;
					[kK]*) DUMPSZ=`expr ${DUMPSZ} '*' 2` ;;
					*)  ;;
				esac
			else
				DUMPSZ=0
				show ""
				show -e "still unable to determine dump device size"
			fi
		fi
		;;
	5.5*|5.6*)
		DUMPFILE=`echo "dumpfile+10/s" | adb -k | grep 'dumpfile+0x10' | awk '{print $NF}'`
		DUMPSZ=`echo "dumpfile+0x94/D" | adb -k | grep 'dumpfile+0x94' | awk '{print $NF}'`
		if [ "${DUMPSZ}" -ge "${REMAXCORE}" ]; then
			## dump device MAY by over the 2GB limit ... get the size another way
			case "${DUMPFILE}" in
				/dev/md/*)
					MD=`basename ${DUMPFILE}`
					DZ=`metastat ${MD} | grep 'Size:' | head -1 | awk '{print $2}'`
					;;
				/dev/dsk/*)
					SL=`expr "${DUMPFILE}" : '.*s\([0-9]*\).*'`
					DZ=`prtvtoc ${DUMPFILE} | awk '$1 == SL {print $5}' SL=${SL}`
					;;
				*)
					show -e "WARNING: dumpfile ${DUMPFILE} size may be incorrectly reported" >&2
					;;
			esac
			if [ "${DZ:-0}" -ge "${DUMPSZ}" ]; then
				DUMPSZ=${DZ}
			fi
		fi
		DUMPDRV=`modinfo | grep dump | egrep -i 'crash.*dump.*'`
		SVC=`sed 's/#.*//' /etc/init.d/sysetup | grep savecore`
		if [ -n "${SVC}" ]; then
			SVCDIR0=`echo "${SVC}" | sed 's;[^/]*;;'`
			SVCDIR=`eval echo ${SVCDIR0}`
			if [ -z "${SVCDIR}" ]; then
				SVCENABLED='no'
			else
				if [ -d "${SVCDIR}" ]; then
					SVCENABLED='yes'
				else
					A=`echo "${SVCDIR0}"| tr " " "."`
					if sed 's/#.*//' /etc/init.d/sysetup | egrep "mkdir.*${A}" >/dev/null; then
						SVCENABLED='yes'
					else
						SVCENABLED="no -- directory ${SVCDIR} must be created"
					fi

				fi
			fi
		else
			SVCENABLED="no -- savecore commented out of /etc/init.d/sysetup"
		fi
		;;
	*)
		show -e "OS Release ${REL} unknown to $0"
		;;

esac

##
## Check setting of DUMPDEV and determine if it is also active swap
##

if [ -z "${DUMPFILE}" ]; then
	CDENABLED="no -- cannot determine dump device"
else
	if [ -b "${DUMPFILE}" ]; then
		case "${DUMPFILE}" in
			/dev/vx/*)
				CDENABLED="no -- dumps to veritas volume `basename ${DUMPFILE}` See SRDB 16646"
				DMPVOL=`basename "${DUMPFILE}"`
				DMPDGP=`basename \`dirname "${DUMPFILE}"\``
				if [ -z "${DMPDGP}" -o "${DMPDGP}" = "dsk" ]; then
					DMPDGP=rootdg
				fi
				
				DLIST=`vxprint -ht -g ${DMPDGP} ${DMPVOL} 2>/dev/null | awk '$1 != "sd" {state=0} $1 == "pl" && $5 == "ACTIVE" {state=1} $1 == "sd" && state==1 && $7 == 0 && $7 == ENA {print $2, $5, $6, $8; state=0}'`
				if [ -n "${DLIST}" ]; then
					set -- ${DLIST}
					VTE=1
					while [ $# -ge 4 -a ${VTE} -ne 0 ]; do
						vxvtoceval $4 $2 $3 $1 ${DMPDGP}
						VTE=$?
						shift 4
					done
				else
					VTE=2
				fi
				;;
			/dev/dsk/*|/dev/md/dsk/*)
				BDFILE=`basename "${DUMPFILE}"`
				DUMPDISK=`expr "${DUMPFILE}" : '/dev/dsk/\(c.*\)s[0-9]*'`
				for sd in `swap -l | tail +2 | awk '{print $1}'`; do
					if [ "${sd}" = "${DUMPFILE}" ]; then
						CDENABLED="yes -- dumps on active swap device [${sd}]"
						break
					else
						case "${sd}" in
							/dev/md/*)
								if metastat `basename ${sd}` | grep "${BDFILE}" >/dev/null; then
									CDENABLED="yes -- dumps on active swap device [${sd}]"
									break
								fi
								;;
							/dev/vx/dsk/*)
								VOL=`basename "${sd}"`
								DGP=`basename \`dirname "${sd}"\``
								if [ -z "${DGP}" -o "${DGP}" = "dsk" ]; then
									DGP=rootdg
								fi
								if vxprint -ht -g ${DGP} ${VOL} 2>/dev/null | awk '$1 == "sd" {print $8}' | grep ${DUMPDISK} >/dev/null; then
									CDENABLED="yes -- dumps on active swap device [${DGP}/${VOL}]"
								
									break
								fi
								;;
							*) 
								if [ -b "${sd}" ]; then
									CDENABLED="yes -- may not be dedicated [unidentified device: ${sd}]"
									# dont break here ... allow another know swapdevice to squash this setting
								fi
								;;
						esac
					fi
				done
				if [ "${CDENABLED}" = "undetermined" ]; then
					CDENABLED="yes -- dedicated dump device"
				fi
				;;
			*)
				CDENABLED="no -- unknown device type ${DUMPFILE}"
				;;
		esac
	else
		CDENABLED="no -- ${DUMPFILE} not a block special device"
	fi
fi

##
## Check size of DUMPDEV
##

OCDE="${CDENABLED}"

case "${REL}:${CDENABLED}" in
	*:no*)
		;;
	5.5:yes*)
		if [ "${DUMPSZ}" -ge "${MAXCORE}" ]; then
			CDENABLED="no -- > 2-Gbyte dump device [was ${OCDE}]"
			show -D "Dump Device ${DUMPFILE} must be less than 2 Gbytes"
		fi
		;;
	5.5.1:yes*)
		if [ "${DUMPSZ}" -ge "${MAXCORE}" ]; then
			if showrev -p | grep 108083 >/dev/null; then
				:
			else
				PATCH="108083(sparc)"
				CDENABLED="no -- missing patch 108083 with > 2-Gbyte dump device [was ${OCDE}]"
				show -D "Patch 108083 required with your dump device ${DUMPFILE}"
			fi
		fi
		;;
	5.6:yes*)
		if [ "${DUMPSZ}" -ge "${MAXCORE}" ]; then
			if showrev -p | egrep '10749[01]' >/dev/null; then
				:
			else
				PATCH="107490(sparc) or 107491(x86)"
				CDENABLED="no -- missing patch 107490 with > 2-Gbyte dump device [was ${OCDE}]"
				show -D "Patch 107490 required with your dump device ${DUMPFILE}"
			fi
		fi
		;;
esac
	
show Generate Crash Dumps: ${CDENABLED}
show Savecore Enabled: ${SVCENABLED}
show Savecore Directory: ${SVCDIR}

show ""

##
## Check for immediate remedies to getting the last crash dump
##

RC=1
case "${SVCENABLED}:${CDENABLED}" in
	yes*:yes*)
		RC=0
		;;
	no*:yes*)
		case "${REL}" in
			5.5.1*|5.6*) show "uncomment the last lines in /etc/init.d/sysetup to enable savecore"
			             show -D "Uncomment 'savecore' portion of /etc/init.d/sysetup"
			             ;;
			5.7*|5.8*) show "use dumpadm to enable savecore"
			           show -D "run /usr/sbin/dumpadm -y to enable savecore"
			           ;;
		esac
		
		show "last crashdump may be recoverable by running savecore manually"
		show "\t  cd ${SVCDIR} || mkdir -p ${SVCDIR}"
		show "\t  savecore -d ${SVCDIR}"
		RC=1
		;;
	*:no*)
		if [ -n "${PATCH}" ]; then
			show "last crashdump may be recoverable by ..."
			if [ -n "${DUMPDRV}" ]; then
				show "\t# unload crash dump driver: ${DUMPDRV}"
				show "\t  modunload -i `echo ${DUMPDRV} | awk '{print $1}'`"
			fi
			show "\t# install patch ${PATCH}"
			show "\t  cd ${SVCDIR} || mkdir -p ${SVCDIR}"
			show "\t  savecore -d ${SVCDIR}"
			show ""
		else
			show "last crashdump not recoverable"
		fi
		if [ -n "${VTE}" ]; then
			if [ ${VTE} -eq 2 ]; then
				show -e "script failed to evaluate ${DMPDGP}/${DMPVOL}"
			fi
			if [ ${VTE} -eq 1 ]; then
				show -D "Correct Veritas Dump Device"
				show -d "instructions to correct dump device for Veritas Primary Swap:"
				show -d "\tno suitable portions of ${DMPDGP}/${DMPVOL} to use for crash dumps"
				show -d "\ttry to free up a slice on a subdisk of ${DMPVOL}"
				show -d "\t* run /usr/lib/vxvm/bin/vxmksdpart <subdiskname> <freeslice#>"
				show -d "\t* add /etc/rc2.d/S35setdumpdev with the following lines"
				show -d "\t\t#!/bin/sh"
				show -d "\t\tPATH=/usr/sbin:/usr/bin"
				show -d "\t\tswap -a /dev/dsk/c#t#d#s#"
				show -d "\t\tswap -d /dev/dsk/c#t#d#s#"
				show -d "\t\techo crash dumps directed to ${VXSETDUMP}"
			fi
			if [ ${VTE} -eq 0 ]; then
				show -D "Correct Veritas Dump Device"
				show -d "instructions to correct dump device for Veritas Primary Swap:"
				show -d "\tfound suitable portion of ${DMPDGP}/${DMPVOL} to use for crash dumps"
				if [ -n "${VXMKSLICE}" ]; then
					show -d "\t* run ${VXMKSLICE}"
				fi
				show -d "\t* add /etc/rc2.d/S35setdumpdev with the following lines"
				show -d "\t\t#!/bin/sh"
				show -d "\t\tPATH=/usr/sbin:/usr/bin"
				show -d "\t\tswap -a ${VXSETDUMP}"
				show -d "\t\tswap -d ${VXSETDUMP}"
				show -d "\t\techo crash dumps directed to ${VXSETDUMP}"
			fi
		fi
		RC=1
		;;
	*)
		RC=1
		;;
esac

[ ${RC} -eq 1 ] && show ""

##
## Check for space availability
##

SVCDIRAV=""
SVCDIRFS=""
if [ -n "${SVCDIR}" -a "${SVCDIR}" != "[ undetermined ]" ]; then
	i="${SVCDIR}"
	while [ ! -d "${i}" ]; do
		i=`dirname $i`
	done
	if cd $i 2>/dev/null; then
		SVCDIRAV=`df -k . | tail -1 | awk '{print $4}'`
		SVCDIRFS=`df -k . | tail -1 | awk '{print $6}'`
	fi
fi
[ -n "${SVCDIRAV}" ] && show "${SVCDIRAV}k available on ${SVCDIRFS} for corefiles" || show "unable to evaluate free space on cores directory: ${SVCDIR}"

if [ -n "${DUMPSZ}" ]; then
	[ "${DUMPSZ}" -ge "${MAXCORE}" ] && DUMPSZ=${MAXCORE}
	DUMPSZK=`awk 'END {print SZ/2}' SZ=${DUMPSZ} /dev/null`
	DUMPSZM=`awk 'END {print SZ/1024}' SZ=${DUMPSZK} /dev/null`
	show "${DUMPFILE} can capture ${DUMPSZM} M-byte core file [ ${DUMPSZK}k ]"
	case "${REL}" in
		5.8*|5.7*)
			DUMPSZM=`awk 'END {print SZ*3}' SZ=${DUMPSZM} /dev/null`
			DUMPSZK=`awk 'END {print SZ*3}' SZ=${DUMPSZK} /dev/null`
			show "    ${DUMPSZM} M-byte core file with 3:1 compression"
			;;
	esac
fi

show ""

##
## Syslog status
##

if [ ${RC} -gt 0 ]; then
	[ -n "${LOGNOTI}" ] && logger -t core_check -p ${LOGNOTI} -i NOTICE: System cannot capture Solaris crash dumps
	show -D System cannot capture Solaris crash dumps
else
	if [ -n "${DUMPSZK}" -a -n "${SVCDIRAV}" ]; then
		if [ ${SVCDIRAV} -ge ${DUMPSZK} ]; then
			[ -n "${LOGINFO}" ] && logger -t core_check -p ${LOGINFO} System correctly configured to capture Solaris crash dumps
		else
			[ -n "${LOGNOTI}" ] && logger -t core_check -p ${LOGNOTI} NOTICE: Available space in ${SVCDIR} may limit ability of savecore to save Solaris crash dumps
			show -D Available space in ${SVCDIR} may limit ability of savecore to save Solaris crash dumps
		fi
	else
		[ -n "${LOGINFO}" ] && logger -t core_check -p ${LOGINFO} System correctly configured to capture Solaris crash dumps given sufficient disk space in ${SVCDIR}
	fi
fi

##
## Notify someone of deficiencies
##

if [ -s /tmp/core_check.deficiencies.$$ -a -n "${NOTIFY}" ]; then
	mailx -s 'Crash Dump Configuration Deficiencies' ${NOTIFY} < /tmp/core_check.deficiencies.$$
fi
rm -f /tmp/core_check.deficiencies.$$

##
## Notify someone of errors
##

if [ -s /tmp/core_check.errors.$$ -a -n "${NOTIFY}" ]; then
	mailx -s 'Core Check script encountered errors' ${NOTIFY} < /tmp/core_check.errors.$$
fi
rm -f /tmp/core_check.errors.$$

exit ${RC}
07070100106fc6000081a00000007000000064000000013a368d940000313400000020000001f800000000000000000000001800000004reloc/bin/diskinfo.i386   ELF              84   -      4    (      4   4                                                         !  !           !                   D"  D                  /usr/lib/ld.so.1    C   Q           5      L   F       2       9   B   4          A   @           E   ,       =   :   K   $   ;   -       3                                   C       .      ?       7               6                           N   P   O       >   '   8   M   (               J                                                                                                                                                                   !                  +               %           1           *               "               <          0   /   &                          )   #   H   I   D   G                       Ԁ                    @          P                                0          X          H     	     8     
                                             D          ܲ                               X                                                                                             ȍ          8     
         
    ؎                 %   x     .   \      3     !  8               E          M         c   	    k   X       r   x       w          ~                       '                  Ȏ          (          D         (                         8                                   x        ؍          P        h         T       X                        +  x       4  H       9         @  X     G  S      N  H     	 h         n         u  (       |                 	  !       
                     *       h                          getopt _start _mcount calloc strtol _environ _end _iob _ex_register readdir _GLOBAL_OFFSET_TABLE_ __ctype atexit exit malloc _xstat opendir _init _fxstat qsort strncpy _DYNAMIC log_file strncmp __iob strcat ioctl _ex_deregister environ perror errno __fpstart optind close _lxstat __longdouble_used closedir open strcmp opterr _edata _PROCEDURE_LINKAGE_TABLE_ fopen memset strcpy _etext _lib_version _ctype main readlink strstr _fini seekdir fprintf _xmknod libc.so.1 SUNW_0.7 libc.so.1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     (=
          "  5  x6  2  XA  T:  %  ı&  ȱ9  ̱'  б)  Ա<  ر,  ܱP    7  D  *  #  @  F  3   ?  ;  N  >  (  E  L  O   -  $  (  ,1  0K  44  8.  5%    %ıh    %ȱh   %̱h   %бh   %Աh    %رh(   %ܱh0   %h8   p%h@   `%hH   P%hP   @%hX   0%h`    %hh   %hp    % hx   %h   %h   %h   %h   %h   %h   %h   % h   p%$h   `%(h   P%,h   @%0h   0%4h    %8h   j j RDthETxRURPD     Pj           Uuuj Uuuj Uuuj Uuuuj UWVSupX    hV}W=   =D                                        {Tt&h$   hTt#tɣ(==P   t=d   Z=l   t=p   h=q   t=t   F  SVW= T;}&++;}KT4Y
  C;|-jh,+   jh<   j hH     [^_U  WVS}WG#  VD#   uh,p
V8#   h4V"#   }u)V  #u"   VT	  #u   }tuSh<SVSjSE=uk=Pu	= t)SKh  =huuP#uj VV[^_Ðj uv  #th  h  j WE  VWSGP=l Z=lZUWVS+  5l   l#   u  uhDW  jwV#tNuhL5((  u
WhTWhdPjSu  Sg= t	Va    E#a[^_UWV+}#tF  #u#u+a   P_  ȋ#t  #u    hjVWNϋ7  #u^_UV5php5VhVh؞VhVh@VhpVhVhVjM^ÐU= uhh5(hh 5(U(= th(P9(h8P&h@5(ÐUVuj#uhH5(^ UWVEE8
U}BG
"tC"t?tBt6j
EPRj
EPW;t++^_Ð:tU   WVSj0j uVj$j EPjj EPEE0EEEuE0   fEx jEPu  fM#uf#t<QPhp5(+hp5(   [^_ +LԈL@=   |D +L܈x@=   |Ƅx jhxV#u   }xxxxhV#t   +} N  h5( EPh5(h5(Vh5(hȠ5(+РD5PS5(F|hؠ5(y+(L5WtQhPUhPEF(|ȃ= tMhP#(#t#Mt uhhhh(P(=  uh8h@P= } u+j$j EPyjj VlE߀eE3EIuEjEPuh  #   f}    j$j EP!jj Vj
j lSE݋ρ   E$
EEuE]E   jEPu   #uxf} uq}XuhH5(+=l<v PS5(G|׋}(tuh`hhPiGU   WVh    Vu#t+hxV  Wh5(^_ÐUVuEVh  u@#uf~ t^ÐUE@cuf@t@utuG@t@udu(@t@usu	@2t+	8 UE@t@ulu	@nt+	8 ÐUHWVSujj EPuEPLhV#tcuV#tSjEP<   =Pu	= t(EPh  hWhEPF#tc	V #tSjEP   =Pu	= t(EP)`  5`W[^_Ðj W#ghV  h  h  j SVSuCP=l  l j W#mjVEP  SSj VEPVuFP=d 5dS    [     у: tQ[   S    [     у: tQ[    DdtqPpl:    ab      DdtqPpl:    .       ..      /       s       %2d:     rmt/%s          %s         usage: %s [-p] [-P] [-t] [-l log_file] [devices] [-d] [-q]
     	devices - /dev/rdsk/* /dev/rmt/*
      	     -t - read thermal values from head 0-8
       	     -p - print physical device name formatted
    	     -P - print physical device name long
     	     -l - log data in a log_file
      	     -d - dual port detection
     	     -q - quiet (no headers)
      
AVAILABLE SCSI DEVICES:

      		Vendor		Product		Rev	Serial Number    	Dual Port      
       
       Error: unable to calloc more space.
    inquiry failed: %d - %d
    StorEdgeA3500FC     T300    	       %s              %s      	       %c      	       %c      #       	       primary         alternate       none            primary          
       	      head %d:        %d      
       	       
       :              %s
      /dev/rdsk/      s       /dev/rmt/       D        ^n~΍ލ.>N^n~Ύގ.           o o         P
        @                               X       (                                    8ܲܲ                                        /dev/rdsk       /dev/rmt    /dev/es    @(#)crti.s 1.4 94/08/22 SMI @(#)libc-i386:libc-i386/csu/crt1.s	1.18 @(#)crt1.s 1.3 93/12/01 SMI as: 3.0.1-alpha 03 Oct 1994 @(#)values-Xt.c	1.6	89/10/24 SMI @(#)synonyms.h	1.1 @(#)math.h	2.3	93/09/07 @(#)floatingpoint.h	2.3 93/09/07 SunPro @(#)stdio.h	1.34	94/06/07 SMI @(#)feature_tests.h	1.6	93/07/09 SMI @(#)ieeefp.h	2.3 93/09/07 SunPro acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE ../src/values-Xt.c
 as: PC3.0.1 21 Jan 1995 @(#)inquiry.c	1.3	97/01/29 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)stat.h	1.21	96/06/03 SMI @(#)param.h	1.48	97/06/26 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)ioctl.h	1.9	92/07/14 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)string.h	1.19	96/03/12 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)malloc.h	1.8	92/07/14 SMI @(#)memory.h	1.8	92/07/14 SMI @(#)ctype.h	1.28	96/08/21 SMI @(#)limits.h	1.35	97/02/25 SMI @(#)int_limits.h	1.3	96/09/23 SMI @(#)assert.h	1.9	92/07/14 SMI @(#)dirent.h	1.24	96/04/25 SMI @(#)dirent.h	1.25	96/08/06 SMI @(#)dkio.h	5.44	97/04/25 SMI @(#)dklabel.h	1.10	97/04/09 SMI @(#)vtoc.h	1.3	94/04/28 SMI @(#)scsi.h	1.9	96/06/07 SMI @(#)scsi_types.h	1.17	96/10/15 SMI @(#)scsi_params.h	1.14	96/06/07 SMI @(#)scsi_address.h	1.16	96/06/07 SMI @(#)scsi_pkt.h	1.33	97/01/24 SMI @(#)scsi_ctl.h	1.19	96/08/30 SMI @(#)scsi_resource.h	1.21	96/09/24 SMI @(#)commands.h	1.14	96/09/05 SMI @(#)inquiry.h	1.19	97/02/10 SMI @(#)inquiry.h	1.6	96/06/07 SMI @(#)sense.h	1.14	96/06/07 SMI @(#)sense.h	1.8	96/06/07 SMI @(#)commands.h	1.26	96/09/05 SMI @(#)status.h	1.16	96/09/24 SMI @(#)status.h	1.11	96/06/07 SMI @(#)message.h	1.13	96/06/07 SMI @(#)mode.h	1.17	97/06/05 SMI @(#)dad_mode.h	1.12	96/06/07 SMI @(#)mode.h	1.13	96/06/07 SMI @(#)types.h	1.19	96/06/07 SMI @(#)uscsi.h	1.16	96/06/07 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE disk_inquiry.c
 as: PC3.0.1 21 Jan 1995 @(#)crtn.s 1.4 94/08/22 SMI ld: Software Generation Utilities - Solaris/ELF (3.0)  .interp .hash .dynsym .dynstr .SUNW_version .rel.ex_shared .rel.bss .rel.plt .plt .text .init .fini .rodata .got .dynamic .exception_ranges .ex_shared .data .bss .symtab .strtab .comment .stab.index .shstrtab .stab.indexstr                                                  Ԁ                     	            X                        @@                         PP                      o                        -   	                         <   	      00  (               E   	      XX        	         N         HH                  S         88                   Y           '                  _           *                  e                            m         !                   r         DD"                  {         ܲ"                             "                                #  S                           XX#                                 S#  	                               ,                    07070100106fc7000081a00000007000000064000000013a3519ca00003d0800000020000001f800000000000000000000001900000004reloc/bin/diskinfo.sparc  ELF               h   4  8     4    (        4  4  4                                                 ,:  ,:           ,< ,< ,<    P           - - -            /usr/lib/ld.so.1       C   Y       T   =   "   S   M       7   ;       H   :       !   G   F   A       K       W       B   R   )   C   1       9   %                           -   I       L   8   E       ?               >                           V   N   X       D   ,   @   U   .              Q                                                                                                                                                                                           &           0                   *       #       6       (           /               '                   5   4   +       3   2       $               <       O   P       J                                             `                      |                                                  	     $      
     h           '           (           (           (           )D           ,<           ,@           -           .h           .           .           .           /                                                                                                             ,          % h       , -`          3 -l          : .        C 2         H 1@  @!     M               Z ,          b ,<         x /0  	      ,p           ,|           -    "       -            ,           '   P      -T           .         -           -          .         -x           1@  @                    ,           -         &              D ,         J              Y .   !    a ,         h 2       n .       z 2        -          -0          ,          ,          2        /         ,@         ,          -                     ,          ,:         (        /0  	!           	 -          -<          .       ( (       . -$         6              S -H        __1cH__CimplKcplus_fini6F_v_ getopt _start calloc strtol _environ _end _iob _ex_register readdir _GLOBAL_OFFSET_TABLE_ __ctype atexit exit _get_exit_frame_monitor malloc opendir _init qsort ___Argv strncpy _DYNAMIC log_file strncmp __iob __1cG__CrunVdo_exit_code_in_range6Fpv1_v_ strcat ioctl __1cG__CrunMdo_exit_code6F_v_ _exit _ex_deregister environ perror errno __cg92_used optind close closedir open strcmp opterr _edata _PROCEDURE_LINKAGE_TABLE_ fopen memset __fsr_init_value strcpy _etext _lib_version _ctype main readlink strstr __environ_lock _fini seekdir __1cH__CimplKcplus_init6F_v_ fprintf libc.so.1 SISCD_2.3 SUNWprivate_1.1 libc.so.1        [       zt      e   Nq      o     .t  =     .p  '     .l       .h  W     .  8     .  ;     /0  *     2  B     2  G     1@  7     ,p  +     ,|  ,     ,  <     ,        ,  J     ,  ?     ,  /     ,  (     ,  F     ,  M     ,  9     ,  E     -   .     -  K     -  C     -$  V     -0  D     -<  S     -H  X     -T  1     -`  "     -l  #     -x  6     -  R     -  :     -  3     -  -      @D  "bĥ, @'  ⸀      $+   `      -` `?-)  "-      =--%    #    @ G     J@ G   "Ȁ  	     "̀     @ G   @ `       @  
   @ G   @ G               㿈'H'DH  !  $#!  $"DH  JD@ Gv   '?     M    !  $" q    !  $" l    !  $" g    !  $" b    !  $"ܢ !  $" Z    !  $" U    !  $"H'  ℣, ?  JaP@ GD   '   
   H℣, @ G<?         '!  !P'!  $" /   @     +    l     P     D          d       t     p     l          q            DH  JT@ F   '?   !  "D@    $ ''@    '  H  , @  '@       !  " @     @    @    @                      㻐'H'D@ FD'      @ F  '       
#  Ja`@ F@    	    
@ F`       k       @  
       a       @ n 
       W    	   H        D@ F   Jah@ F  
@ F  @ F '    !  "     !  "Ѐ      @ Fa ,   @ @      $   @ Fl$'$@ Fj  H$$@ FW 
 @ FS %         $  $$$$@ FP@ F9'     @ FI  @ FJ              㿈@  '!  #@  W   $##'   I         Jal@ F2   ' ,  $     @ F '      #  b%  Jp@ F      b@ F     b@ F @ : @ E!  "܀      @  $'@ `'                      㿈'D'D'       '$'            ?' @  , ''D'      $   '$'     $     F@ E   '  'D '    $$ ' '       D '                 㿠%  `#  Ja!  # @ E@ `<@ E ``@ E `@ E} `@ Ez `@ Ew a@ Et a4@ Eq @ E<?                 㿠!  "䀤          #  b%  J@ EZ b@ EW!  "Ԁ      b@ EOD#  b!  J#0@ EI  b@ EF               㿘'D @ EAD'      !  "  Jc8@ E0    '              㿀'H'DD  'H  'M` `     L        3   %  1@           
@ E@ '@ E 
'쀤     $    ' 'L L  @     	   ' '   L  L  $                  'H'D̔ 0 @ D   $ @ D   @ @ D   / 0/' /' 0' x7D @ ̒ '      W      !  "  Jc`@ DW''     M , '    , '     nM , '    n*   Jc|@ D~       '      x, '    n  Jc@ DW   '``        '\'\H      #  b!  J#@ DG  b @ DCb@ D@ b @ D<nb@ D9 '     '  J)  "  L@ D*  '    !  "  Jc@ D   '      L #  c1 W 
   !  "  Jc@ D	     !  "  Jc@ D    '    !  "Ԁ   -   %  '  J@ C \       ҡ4` , 4       4` , 4       @ Cْ    @ CԒ    @ Cϒ    @ Cʒ(!  "   
   !  "  Jc@ C       !  "  Jc@ C   !  "؀      H      '      $@ @ C    @ C   / ? / 3/ I/' /D @  @ '      W       e    $@ @ Co    @ Ck  d 
 @ Cf   / ? / /' /' 'D @  }@ '      W       9   !  "  Jc@ CP'     d `    $a  ''!  "  K` @ C; '           
   !  "  K`@ C'       !  "  K`@ C    ' q   !  "  K`@ C     '              㻘'DD $ @ C@       ' '%  K@ @ B ',  !  "@ B                 㿘'L'H'D H$  H L $ D$@ BH'`  	   HT           ?   @               p'DDJ   `c 'D f  DJ    #1
@       c1D 'DDJ  
 	
      DJ   `t 'D J  DJ    #1
@       c1D 'DDJ  
 	
      DJ   `d 'D .  DJ    #1
@       c1D 'DDJ  
 	
      DJ   `s 'D   DJ   `2 'D 
  DJ      "                       㿈'DDJ    #1
@       c1D 'DDJ  
 	
      DJ   `l 'D   DJ   `n 'D 
  DJ      "                       @'D' @ A  D@ A@ %  K @ B    L    
'>   D    @ A@ '    !  "     !  "Ѐ      @ A .   @      &   @ Aג',  @ AÐ$'$@ A  @ A @ AD%         $  $$$$@ A  K`0@ A@ '   J    	'a   C    @ A@ '    !  "     !  "Ѐ      @ Ak -   @      %    @ A  @ Aq$'$@ Ao  @ A`   @ A\D%         $  $$$$@ AY     㿠@      ??           @     @      㿠@      x?           @      ,??           @     @             main search_dir print_dev sort_dev usage print_header zalloc compare_name scsi_inquiry print_ctrl uscsi_cmd conventional_disk_name conventional_tape_name device    DdtqPpl:    ab  DdtqPpl:    .   ..  /   s   %2d:     rmt/%s      %s     usage: %s [-p] [-P] [-t] [-l log_file] [devices] [-d] [-q]
 	devices - /dev/rdsk/* /dev/rmt/*
  	     -t - read thermal values from head 0-8
   	     -p - print physical device name formatted
    	     -P - print physical device name long
 	     -l - log data in a log_file
  	     -d - dual port detection
 	     -q - quiet (no headers)
  
AVAILABLE SCSI DEVICES:

  		Vendor		Product		Rev	Serial Number    	Dual Port  
   
   Error: unable to calloc more space.
    inquiry failed: %d - %d
    StorEdgeA3500FC T300    	   %s      %s  	   %c  	   %c  #   	   primary     alternate   none        primary      
   	  head %d:    %d  
   	   
   :          %s
  /dev/rdsk/  s   /dev/rmt/    -                                                  00     <0     H0     T0     `0     l0     x0     0     0     0     0     0     0     0     0     0     0     0    0    0     0    ,0    80    D0    P0    \0    h0               '    (            
      `      o  ]o |o        D          $            	          o   o        ,@                                 P         2                                             -                                 1P/dev/rdsk   /dev/rmt    /dev/es  @(#)inquiry.c	1.3	97/01/29 SMI @(#)stdio.h	1.78	99/12/08 SMI @(#)stdio_iso.h	1.2	99/10/25 SMI @(#)feature_tests.h	1.18	99/07/26 SMI @(#)isa_defs.h	1.20	99/05/04 SMI @(#)va_list.h	1.12	99/05/04 SMI @(#)stdio_tag.h	1.3	98/04/20 SMI @(#)stdio_impl.h	1.8	99/06/10 SMI @(#)types.h	1.65	99/11/15 SMI @(#)machtypes.h	1.13	99/05/04 SMI @(#)int_types.h	1.6	97/08/20 SMI @(#)select.h	1.16	98/04/27 SMI @(#)time.h	2.64	99/10/05 SMI @(#)time.h	1.39	99/08/10 SMI @(#)time_iso.h	1.1	99/08/09 SMI @(#)time_impl.h	1.5	99/10/05 SMI @(#)stat.h	1.2	99/05/19 SMI @(#)stat_impl.h	1.1	99/05/04 SMI @(#)param.h	1.75	99/11/15 SMI @(#)unistd.h	1.37	98/10/28 SMI @(#)ioctl.h	1.9	92/07/14 SMI @(#)fcntl.h	1.14	97/12/05 SMI @(#)fcntl.h	1.45	98/07/17 SMI @(#)string.h	1.24	99/08/10 SMI @(#)string_iso.h	1.2	99/11/09 SMI @(#)unistd.h	1.58	99/11/11 SMI @(#)stdlib.h	1.47	99/11/03 SMI @(#)stdlib_iso.h	1.1	99/08/09 SMI @(#)errno.h	1.16	99/07/26 SMI @(#)errno.h	1.19	98/01/14 SMI @(#)malloc.h	1.11	97/08/23 SMI @(#)memory.h	1.12	99/11/09 SMI @(#)ctype.h	1.33	99/08/10 SMI @(#)ctype_iso.h	1.1	99/08/09 SMI @(#)limits.h	1.51	99/10/08 SMI @(#)limits_iso.h	1.1	99/08/09 SMI @(#)int_limits.h	1.6	99/08/06 SMI @(#)assert.h	1.9	92/07/14 SMI @(#)dirent.h	1.29	99/03/11 SMI @(#)dirent.h	1.32	99/05/04 SMI @(#)dkio.h	5.54	99/06/13 SMI @(#)dklabel.h	1.13	98/01/06 SMI @(#)types32.h	1.4	98/02/13 SMI @(#)vtoc.h	1.7	98/01/06 SMI @(#)scsi.h	1.9	96/06/07 SMI @(#)scsi_types.h	1.17	96/10/15 SMI @(#)scsi_params.h	1.15	99/07/06 SMI @(#)scsi_address.h	1.17	98/01/06 SMI @(#)scsi_pkt.h	1.35	98/11/05 SMI @(#)scsi_ctl.h	1.20	98/10/11 SMI @(#)scsi_resource.h	1.21	96/09/24 SMI @(#)commands.h	1.24	99/09/14 SMI @(#)inquiry.h	1.20	98/01/06 SMI @(#)inquiry.h	1.6	96/06/07 SMI @(#)sense.h	1.15	98/01/06 SMI @(#)sense.h	1.9	96/06/28 SMI @(#)commands.h	1.28	98/01/06 SMI @(#)status.h	1.17	98/01/06 SMI @(#)status.h	1.11	96/06/07 SMI @(#)message.h	1.13	96/06/07 SMI @(#)mode.h	1.18	98/01/06 SMI @(#)dad_mode.h	1.13	98/01/06 SMI @(#)mode.h	1.14	98/01/06 SMI @(#)types.h	1.20	98/07/21 SMI @(#)uscsi.h	1.23	99/03/01 SMI @(#)sddef.h	1.96	99/11/08 SMI @(#)note.h 1.2 95/03/21 SMI @(#)mhd.h	1.6	99/05/20 SMI acomp: Sun WorkShop 6 2000/04/07 C 5.1 ld: Software Generation Utilities - Solaris-ELF (4.0)  .symtab .strtab .shstrtab .interp .hash .dynsym .dynstr .SUNW_version .rela.ex_shared .rela.cpp_finidata .rela.data .rela.bss .rela.plt .text .init .fini .exception_ranges .rodata .rodata1 .got .plt .dynamic .ex_shared .cpp_finidata .data .data1 .bss .comment                                                                            #             x                )       `  `                 1                             9       |  |   0                 G            0               W                           j                           u            0                      $  $  D                      h  h  `                         '  '   P                         (  (                            (  (                            (  (                            )D  )D                           ,<  ,<                           ,@  ,@  x                        -  -                          .h  .h   (                         .  .                            .  .   P                         .  .                             /  /  |                               /                                 7                 07070100106fc8000081a00000007000000064000000013ab7e04600000ff200000020000001f800000000000000000000001300000004reloc/bin/explorer    #!/bin/ksh -p
#
#  explorer - System information data collector
#  $Id: //depot/dev/proactive/explorer3/bin/explorer#24 $
#

# Put variable assignments in environment
set -ka

# Open up umask
umask 022

# Source main functions and parse arguments
MAIN="`dirname $0`/../lib/exp_main"
if [ -f "${MAIN}" ]
then
    . ${MAIN}
elif [ -f "/usr/lib/explorer/exp_main" ]
then
    . /usr/lib/explorer/exp_main
else
    echo "Unable to source exp_main"
    exit 1
fi

# Clean up on any of the given signals
trap 'clean' 1 2 3 14 15

# Set PATH based on EXP_PATH
PATH=${EXP_PATH}
export PATH

# Validate defaults file
ksh -p ${EXP_LIB}/exp_check

# Set start time
EXP_START=`date -u '+%Y.%m.%d.%H.%M'`
EXP_PID="$$"

# Make sure EXP_ID is set
require 'test -n "${EXP_ID}"'
logfile NOTNOISE "explorer ID: ${EXP_ID}"
# logfile "local time: `date`"
TEXT=`gettext "local time: %s"`
date=`date`
TEXT=`printf "${TEXT}" "$date"`
logfile "${TEXT}"

# Must be Solaris 2.x, run as root and no previous EXP_TARGET
require "test `uname -s` = SunOS"
TEXT=`gettext "Must be run on SunOS 5.x"`
require "uname -r | grep '^5'" "${TEXT}"

# Attempt to use /usr/xpg4/bin/id, otherwise use /bin/id
TEXT=`gettext "Must be run as root"`
if [ -x "/usr/xpg4/bin/id" ]
then
    require "test `/usr/xpg4/bin/id -u` -eq 0" "${TEXT}"
else
    require '/bin/id | egrep -s -e "uid=0\("' "${TEXT}"
fi
require 'test -n "${EXP_TARGET}"'
TEXT=`gettext "EXP_TARGET=%s already exists"`
require 'test ! -d ${EXP_TARGET}' "${TEXT}"
require 'mkdir -p ${EXP_TARGET}'

# Redirect STDERR to stderr file above TARGET to allow for NFS collection
exec 2> ${EXP_STDERR:=${EXP_TMPDIR}/stderr.${EXP_PID}}

# Log to /var/adm/messages
TEXT=`gettext "Explorer started"`
logger -p daemon.notice -t explorer "${TEXT}"

#
#  DATA GATHERING
#

# Loop through all scripts
if [ "${EXP_HOME}" = "/" ]
then
    for script in ${EXP_LIB}/tools/*
    do
	ksh -p $script $*
    done
else
    for script in ${EXP_HOME}/tools/*
    do
	ksh -p $script $*
    done
fi
# logfile NOTNOISE "data collection complete"
TEXT=`gettext "data collection complete"`
logfile NOTNOISE "${TEXT}"

#
#  POST PROCESSING
#

# Remove any zero length files from explorer output
find ${EXP_TARGET} -name '*.err' -size 0 -mount -exec rm {} \; 1>/dev/null 2>&1

# Post processing (IP address masking)
ksh -p ${EXP_LIB}/exp_postproc $*

# Set finish time
EXP_STOP=`date -u '+%Y.%m.%d.%H.%M'`

# Generate parse data
gen_parse_data

#
#  TRANSPORT
#

# Use system gzip before explorer gzip
EXP_GZIP=`which gzip`

if echo "${EXP_GZIP}" | egrep -s -e "^no "
then
    EXP_GZIP="${EXP_HOME}/bin/gzip.`uname -p`"
fi

# Tar and compress with gzip
EXP_FNAME=`basename ${EXP_TARGET}`
EXP_FILE="${EXP_FNAME}-tar.gz"
cd ${EXP_TMPDIR}
tar cf - ${EXP_FNAME} | ${EXP_GZIP} -c >${EXP_FILE}
# logfile "${EXP_FILE} created"
TEXT=`gettext "%s created"`
TEXT=`printf "${TEXT}" "${EXP_FILE}"`
logfile "${TEXT}"

# Send the tarball
if [ -n "${EXP_TRANSPORT}" ]
then
    # Make sure EXP_REPLY is available to the transports
    ksh -p ${EXP_LIB}/exp_transport $*

fi

# Clean up
if [ -n "${EXP_STDERR}" ] && [ -s "${EXP_STDERR}" ] 
then
    # logfile STDERROR "= = = stderr output from explorer = = ="
    TEXT=`gettext "= = = stderr output from explorer = = ="`
    logfile STDERROR "${TEXT}"
    while read line
    do
	logfile STDERROR "$line"
    done < "${EXP_STDERR}"
fi
test -n "${EXP_STDERR}" && rm -f ${EXP_STDERR}

# Remove old explorer runs if needed
DIR=`dirname ${EXP_TARGET}`
if [ -z "${EXP_KEEP}" ]
then
    # logfile NOTNOISE "removing previous explorers from ${DIR}"
    TEXT=`gettext "removing previous explorers from %s"`
    TEXT=`printf "${TEXT}" "${DIR}"`
    logfile NOTNOISE "${TEXT}"
    cd "${DIR}"

    for i in explorer.`hostid`.`uname -n`-*
    do
	# Keep the most current (directory and tarball)
	test "$i" = "${EXP_ID}"   && continue
	test "$i" = "${EXP_FILE}" && continue

	# Remove old directories
	rm -rf $i
    done
fi

# Log to /var/adm/messages
TEXT=`gettext "Explorer finished"`
logger -p daemon.notice -t explorer "${TEXT}"
logfile NOTNOISE "${TEXT}"
clean 1

exit 0
  07070100106fc9000081a00000007000000064000000013a36a4120000e30400000020000001f800000000000000000000001400000004reloc/bin/gzip.i386   ELF              4         4    (      4   4                                                         R  R           T  T>      l"            ?                  /usr/lib/ld.so.1                    W                                   y      N         x       6           a          =                 #                  Y                       q                                           >      c                             E   P          2              @       X           "   0   m               U   R          d                ~                  ^                                     -                                                       S                        <   k       %   w       e                 j      g                                 z       B                                            A       G                        p       {   V                 \   1          )                            i                     [   F                                                                                                                                                                                                                                 ,                           .   8       4       9       ?               C       (                                                           3   5   *                              ]   O               +       '           ;                   h       L                              `   T   &       r   |   Z       f       $           u       M   s       _                                           /                                J   o           Q   K       }                                         D          !                    v           l   7                                  b           n          t                  I       :   H                       Ԁ                                                              0          H               	          
     !          !          !          T>          ?          ?          ?          ?          U                                                                                             $C        PC        0C        C        X!    
 $        
 +        4        ?   @       D        
 L   p       S          X   0    
 d        p        y   XC               hp   
            `
         T        @	  !     C        E                                                   T>        N   
   |P       +    
 +  	    3  H(    
 :  ċ     F  ȋ     O  `       V  ̋     _  Ћ     f         m         r  C     x  Ћ       ԋ@      U       0                  d    
          Х         DC       	       <	   
   !'       l   
   ,N       P    
   	       l   
   	                 	     #  $	     .     
 <  C     D  (C     L  (	     V  ,	     e  @C     k  0    
 v  XP"       T   
   C       0   
   t8    
   HC       0	       P         D    
   y   
       
   4C          
   0	                4	       ?        p         8	     "          )  @	    /         5  8C     =  <C     D  P       J          Q   	     \  P     b  @       h  `       p  	     w     
 }  	           
   TD    
       
       
   	       |v    
   |H    
    F    
                                 
       
       (N        
              
  У         (,    
             `   
 .          3  U     :  X   
 A  Ф       G          O  ?     a      
 l         u         z     
 ~  U       $    
   K       
            
   <l   
   P                  U       D    
   U             	   '    
             
       
 H               (    
 &  `
     ,  s   
 7  R.      >  P     I  ?     V   `
     \         c  ,C     i  `
     o         v  t!    
   `   
   	  !    `            
   `
          
   `
       `
                p    
   TC                 @         p         `
       0         !*     	  `
           
   LC        C     (  0    
 0  0       8  4   
 @         G  T    
 T          \  C      list total_out do_lzw ascii getopt _start bytes_in foreground read _mcount calloc atoi write_error last_member z_suffix longopts progname inflate_fixed _environ _end block_mode _iob decompress work time_stamp _ex_register readdir __flsbuf _GLOBAL_OFFSET_TABLE_ inflate_codes lbits make_simple_name __ctype strlwr prev_length strstart signal read_buf window atexit exit force decrypt inbuf optopt malloc _xstat unlzh prev opendir exit_code block_start unlzw _init add_envopt ext_header read_error ifd inflate_stored match_start _fxstat good_match nice_match check_zipfile no_time verbose bytes_out save_orig_name level abort_gzip mask_bits ct_tally to_stdout copy_block flush_outbuf args ifname getenv lzw _getopt_internal bi_windup test lm_init max_chain_length strncpy env _DYNAMIC strncmp file_type printf __iob chown maxbits method ctime strcat ifile_size dbits write strrchr insize unzip file_method display_ratio warn send_bits inflate_block d_buf inflate updcrc write_buf _ex_deregister environ perror bb errno pkzip bk unlink __fpstart error utime longest_match free optind unpack close _lxstat __longdouble_used fill_inbuf closedir open zip optarg bi_reverse window_size hufts clear_bufs flush_block strcmp fgets opterr file_read _edata _PROCEDURE_LINKAGE_TABLE_ xmalloc memset ofname outbuf strcpy huft_free inptr huft_build _etext crc_32_tab _lib_version istat fflush quiet z_len memcmp getopt_long deflate _ctype strspn inflate_dynamic header_bytes main key ofd chmod basename remove_ofname memcpy strlen strcspn part_nb lseek _fini outcnt copy total_in recursive bi_init fprintf ct_init isatty flush_window _xmknod no_name libc.so.1 SUNW_0.7 libc.so.1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      d         (=
    n      ?3  ?    @	t  :  `>A  d>  h>B  l>H  p>  t>V  x>  |>  >  >  >>  >q  >n  >%  >  >  >  >  >  >  >y  >  >s  >  >"  >x  >}  >  >  >  >  >  >u  >K  >  >4  >  >  >  >G   ?|  ?g  ?  ?$  ?5  5X>%\>    %`>h    %d>h   %h>h   %l>h   %p>h    %t>h(   %x>h0   %|>h8   p%>h@   `%>hH   P%>hP   @%>hX   0%>h`    %>hh   %>hp    %>hx   %>h   %>h   %>h   %>h   %>h   %>h   %>h   %>h   p%>h   `%>h   P%>h   @%>h   0%>h    %>h   %>h    %>h   %>h   %>h  %>h  %>h  %>h   %>h(  %>h0  %>h8  p% ?h@  `%?hH  P%?hP  @%?hX  0%?h`   j j R?th!ETRURP	z    Pj           UuujÐUuuj Uuuj Uuuuj UhEhE5h!h`	ÐUWVS=EhhIhxI5h$"5`	VE#t4"PSVi#u[^_ÐUWVS=?hIhI5h<"5`	V+?#tL"PSV#u[^_UVhIhI5hT"5`	VhIhIhd"Vh"Vh"Vh"V^ÐUWVSE0\  P~%h"D0Pt#u
D0 hIEPEP\  4	#tEHCjjD=   #thj!jj=   thjjj=   thjjh"5#tjh"5#uC   @   CC/h"@Pj#th"5S#tjh"=WiW `
j 5XCVhIuu3w  =y   JHσE  j   9  C   (  5U8C  C      C      C      CC$C   C      C       ,C   (C        C   {5U`
5UWQW   CC4CA(C,C    -@Cj      CCj VSuuu  ==C }
CC=C }
CCu+5U=C t!=,C u5h#h`	`
#u	=C t=   ~%5U5hD#h`	j  =0C t=C u
E#   MU=C t=4C u=$C u=C ;}t@UE4  U;E|R+C$d#5h"h`	 8jt7   =$C t=,C u~	jjO  5DC  DC[^_ÐUVC=C    =$C    #t@	P	@PC#ta#t$J4J#tDJLJPR5h|$5`	VJ5h$V6j<  C#Ƀ=4C u=$C u#h$h0	qh$h
_    +=$C u	=C u-h `
M	P#thPJX  ``
 	&U  C   5`
=C t5	
  <C#}5DCj  =$C t5<C5	     ]	PM	PE#   C#t5= u,	9`
t5	4
  <C#|c5(	룐=(C tO=4C tBh$h`	,5`	VP(	+`
+PX  h%V#t^ÐU   WVSh%}W#   5Cx5C  xVWx5 `
"   _^W  4$W7  j  DC   X  5h%h`	WjDC   '  5<C5	  5	H  h
B  V.    5 `
VWS  #  4`
%   = @     = C =,C uZh0	5h%h0	5h<%h`	&s   QHPh0	5hx%h`	=DC (  =   t=,C u떐8`
C=   v&#u"=C u=,C u=   w    냐P`
 	=C t=$C u+``
#t&=$C u=4C uh%h
  #z  +=C h  P=0	W	=|Q  `
    =C t5	  <C#
=$C =C t;]	`
h
W5h%h`	},	(C3  #  ,	(C=C u#t#u	=,C t#u=C u	   +,	#tU`	W=   |`J!dJW=   }lJPWh%S++=(	5`
5	E	#u7=C t8= u/	9`
t"Q  <C#}	<CQ=C u5`
#tS  =<Cu=C x=(C ta`	=4C tdh%SSP++PS  =4C u=C uh
h%Sh &S=C [^_Ë(	`
=C tSR++R됐U   WVS  =C t(=C 5`
<$<$  9  #   TC   h  V=
W`
=tixSP#   SW  #tB=C z=,C uW5h&h`	=DC u
DC   +&W5	!DC      [^_Ð5	5h&h`	CW5	5`
<$듐U
    ME=C u=C uQPQPU(WVS=tJh4&h#u=xJuEu؃} u	MDPVVN  4$}؋Pp;~ +ƀ|/t7D+P^#t#u+
EE+[^_ÐUWVS5Ju=0	WmuW#t:=C t=
uW#t"WUDC      +[^_Wh<&h#u5JJJPW?uWS#tƃ0	 #uhWnUWVS50	V=
WWB؃=C   #    C#u=$C    =4C    =(C u#   ,C#   ,C#   V5hD&h`	   SV5h&h`	u   DC   dSrL  hl&Sl#tht&SZ#uh|&S  ,	    hW+   [^_Ð#tу=(C S= C u=,C ==DC uOUWVS`
	=C   =C   ;s@`
ԋj!J  С`
	U;v  @`
ԋ5@`
ԋ#@`
ԋU;rj I  E<C`
+=`
=jh&uV#tjh&V#L  `
;	sH`
ԋj II  <C=      Ph0	5h&h`	gh0	5h 'h`	FDC     ~  =,C uh0	5hD(h`	=DC u
DC   9  j;j yH  С`
	E`
;	sH`
ԋ
j 0H   $Et4h0	5h8'h`	KDC   =Ct8Ph0	5h|'h`	DC   =C`
	;s@`
ԋj G  `
	;s@`
ԋj UG  С`
	;s@`
ԋj !G  С`
	;s@`
ԋj F  С`
	t=C u5;s@`
j F  `
	;s
@`
j F  }    `
	;s@`
ԋj ]F  `
	;sH`
ԋ
j 0F  =(C tVh0	5h'h`	P   `
	;s@`
ԋj E  `
	;sH`
ԋ
j E  =(C tVh0	5h'h`	N#t&`
;	s@`

j RE  N#u   =C u=C t	=$C t	=`
~/`
;	sH`
ԋ
j D  "uvh
nF  uhJH  `
;	s@`
ԋ
j D  F#t
;r뵐E=$C u
#t=$Ct[`
;	sH`
ԋj ID  #t,`
;	s@`
ԋ
j D  #uԡ<C=`
  `
`
q  =`
Eu*  #   <C9  EX<C        E<	   <C   E<C            =<CE=`
      jh'VC#u%=`
ujh(hԋ"#jh(V
#jh(V#'jh(V#.=C t=C t=$C 8<C#}#=`
h0	5h$(U[^_ UWVS}=K   #  K    +=(C th|(L=,C uh(6+E(	 	   =    jj]SȃtkjEPS=   t6E  MEMUEEMMUȉ(	hH@ =(C tQu4Kh)E5(	5h0),  LC5`
5(	Ɖ5   =LC   #=LC#   PC#   =(C t(RWh(	RWh(=LCPC	=,C thP	R+=`
+RjD  h)eEPC5`
5(	Ɖ5hP	P++P(D  h
h@)[^_ =LC(	#=t5`
PC#|ЉPCUUMA9Bu9u	   + U   WVSuVD>E]VWt"   _^D> tPV:#utPSz#t
   +ML>[^_ÐUWVS+E   }WA؃=C t.hpKB  D hVm[^_WE#uhKA  E  ,	   ~#hH)]S#uhP)S롐]}j/u#t@E8 t&hX)W;~w"tG"u#uK#u}#tFލs"u)KPWR#uhKA  ~ NU   WVS
    xV=
W#t#=
N  Wi4$Wh#u݃=C u(VW#tW<4$W;#   Vh `
y#   W50	Vt#u)=C tKKPV5h`)WV5h)h`	!5h*h`	WzDC      ,h)V=DC u
DC      +[^_Ð=C    h)(SW5h)5`	Vk= t;M	P#t'h)V@Vh@	jOS(t    =y   0h  WiW#9UVuF8EF@EEPu:#tYF%   = @  tJ,C#u5h*h`	,C=DC u
DC   #uh
^ÐUWV}5
=C t-#t$9G@tG@=(C~Vh$*h`	WV-G%  PVg#tF,C#u5h@*h`	,C=DC u
DC   #u	V=w wV.TC    h  50	VV'#tF,C#u5hH*h`	R,C=DC u
DC   #u	V^_ÐU  WVSuV#u6V5hP*h`	DC   }W[^_W#t}hh*x
W#   hp*W#   VWD=  }BVP#t	Ƅ/CWPP'WV5hx*h`	DC   u#9UVu=K t	VK   4	#tP4	    HC#tPrHC    V?^ U=TC t5`
h
jfUWV++fMfMM	u5`
<C   `
   K
`
   K
   
=,	 tB`

 @  u	8  `
B?  s2Ј
B
\7  `
F`
Ј
 @  u7  `
B`

 @  tB?  s)Ј
B`

QH7  J`
Ј
 @  u(7  `
B`

 @  tj j 5  UV  h<CEP  EP5@C  `
B`
fE
 @  u6  `
B`
ƀ
 @  uv6  =,	 tBh0	_7  `
B`

 @  u:6  `
F"u`
`
  `
BU?  s/Ј
B
Y5  `
UF`
Ј
 @  u5  `
UB`

 @  tB?  s-Ј
B
Z_5  `
K`
Ј
 @  u85  `
UB`

 @  tB?  s.Ј
B
X4  `
E`
Ј
 @  u4  `
B`

 @  tB?  s*Ј
B`

RS4  I`
Ј
 @  u44  `
B`

 @  t`
3  +^_ÐUWVu}W5	t#uVW2  U5^_UWVu|	~h@LH6  5U   Wj hKUK 	K$	K0	uEE	t+5ȋ5	WhЋ̋U#t=uU   5UI5U=  s  =U  s	=U t+ҋЋ3%  UBr^_ÐUWVS0	ȋЋ5ċƁ~  v	+Ҍ]\]]]];5 	rUE}E}uU87Ћ   U87ϋ   8Ћ   Q8ы   ҋAF8u<AF8u4AF8u,AF8u$AF8uAF8uAF8uAF8u;r+ȍ  ;U~(=	U;$	}7u0U0U  <};}vM} E[^_ÐUV5K+5Uȋ+uN         =     h   hhЋ	 ȋ ȋ	 +U   r +fUB   r+U   r +fUB   rP=U u5VUЋP̋#t=uU   U^ÐUWVS+ċ   ȋ=U   Uҋ3%  UfEҋ  f}fE#t'+=~  wR	Uȋ;vrzFP+	Q  EU+ƣUȋ;5UwzNUAҋ3ׁ  UfU  f}fUN#uA'ЋPj 1  EUHUȋAȋ,5ȋ+Ћы3ׁ  U} t4	#|
Ћ+j +QRS  ȋ	U=  s)=U u *U=  s	=U tȋ#K	#|
Ћ+j+QR  [^_ÐUWVS+Ҿ   =U#Ћj+PR  [^_ÐUȋ#  UUҋ3ׁ  Uf<U؁  f<]fU5ċ֋5	u   #tL;UsD+߁~  w8WU;vȋċu+=	   vNb  ;Z  ȋERI+Q,  EċHU+щU5UȋAҋ3  5Ufu  f}fuHċ#uE       @ȋ} tJ	#|Ћ+j +PR  ȋ	UE   @ȋIU  s*=U u!U  s	=U tȋ#$U#tϋPj   ȋ	#+} rϋPj   #t8	#|
Ћ+j ȋ+PR2
  ȋ	ȋ@ȋUIUWVSE8	E	 V    V    f=v y  ++   f+ۋTL;}iBC;|@=   |Ԉi++҉4 f+ۋL;}gFC;|B|}4ދ f+L;}hCF;|B|+   =Huf+f f~vAfXu   ~   f	 f~vAfZu   ~  f f~vAfVu  ~  f~vAfXu  ~h  h|v  +f f4vjW  fvG|   [^_ÐU++f{A  |+fzA|+fhuA|f VVVVVV VÐUWVSU4TlPl;   u}Tlf4;Pl}/Xlff;rf;uj8jw@Tlf4Uff;r4f;uju8jvUTlE;Pl~UUu4Tl[^_ U$WVSEMHMHMHMx@E++   W=HufLl4TlMfDLl@==  _   U}u<TlLLA;M~MEfL;}CfMHu+;}|+U]
V} t]|V@==  |U}u#   ~f<MHu uIf<MHu tfMHufMJufuHu##tRȋUuHu#t<EI<Tl;}&D;t+؉]EVftM܃} uN#u[^_ U WVS+ɺ   UFufLUB~+};.]L#tfDM@fDMQHP
  fF;~[^_ÐUWVSE8HMHEMPl    ++Ll=  +;};]f< tPlBPl؉Tlƀj ft@;|Љ]Pl=   }SUMf @Pl}B+ۉTlf4ƃj V#tD)VPl=   |UMEHPl|SWMK}   XluHPlTlXljWXlLlHTlHLlTlfffjj:r@jftft5XlFjWPlXl=   hLlHLlTluIuW[^_ Pl&UWVSE]CE          #u
      }fD+;   ]}]]؋EDG;};tu;}/fhu2;]tfhufufu#uڃ
~fu+]#u            ;t      A;Mn[^_ÐUWVSEu~E          #u
      +ۋU;  u]u]]ߋU}|F;};   ;}(juPhuPq  N#u   #t[;]tjuPhuP@  NuPuP'  juPuP  j"
~uPuP  jV  +]#u            ;t      EU9U[^_ÐU5Mh{5MhzhM   Mf<ju uH=   }@VL
VÐUWVSjEP  j}OW  juFP  +;}jMjuP  C;|EHPh{Whz[^_ UWVSVV V8	f8u  hMhMEV
V
   ] V;wȋ};w#S;   u#   jW
  V
   $D VjSV  OjGP  E@PM@PM@Phzh{  VVDV#t  V   VV[^_Ð;ujGPQ  hvh|v_  VUWVSVAVEԋu#   f{V0gfzV@Vf4U	VVVu(VPVV VV V=@C~TfuMV5ȋ+5	u+<zLF|u;s;r  t=V   u	   +[^_ÐNif   hUWVS++++u=V   EMU}EuE VEEEԋEEu&DPP+< fPWn     i  P  PG  TL#t+<fPW+  E<E	E   s
ghEDPEP   L#XEEE;V	  P   P   [^_ÐUV+++4{B|   }4{B   |   }4{B   |;v+   8	f^UE+f=t
̋ÐUWVSu   +Ƌʋ}f;   f`
X=?  s3È
X`

[+  LЉ`
È
= @  u  f`
@`

= @  t   +Ef
f5[^_UV+uMց   I#^UV=      `
Qf?  s)ʈ
Q`

u3  n`
ʈ
 @  u  `
fA`

 @  t%#~!`
@`
f
= @  t+f^ÐUWVS!u}    `
H=?  s&Ћ
@
Gg  `
9Љ`

= @  u
D  `
@`

= @  tH=?  s%Ћ
H`

@  9Љ`

= @  u
  `
@`

= @  tN#t,}`
@`

G= @  u  N#u[^_UWV`
ԋU	֍T:Љ`
¾   ;	w&QyQЁPKtTh0	5h*&h0	5h*h0	5h +h`	z5DC   >A<C#t=   uA$Ћ#uA,N5(N+^_UWVS++E	E`
j j N  (N#t_=,N uV=5<C=        =   u1h0NhN^  hDNN    #u=(N   +`
;	s@`
ԋ
j   D5F|E}EMEuEM6E}EMEuEMQ  ##؃=Ћ t   +UUы+;t!RSh,+h`	hpN  K#`
;	s@`
ԋ
j e  `
A`
Ћ   u  K#u0=,N t>+`
;	s@`
ԋj   D5F|oj h
x  ;thN  ;5(	thN  =(N    `
B;	suԋՋ֋׋ȁPKuB=C tI=,C uh0	5hD+h`	膴=DC u
DC   +(N,N:h0	5hx+h`	FDC   +(N,N   [^_ÐU  WVSjDj tPMEЋ>tJ#uMM 9tuR+ҋE+@   6#tp        M} t}u+[^_Ë   t uGv};s׾   t uN#uu;v։ϻ   ];sM+t#]G;rMt)M} ?Mtǅ4    +xMЍ8N#t];9N#u}+#t0A0IF;rǅ0    +MEǅp    +E    ];]EEẺ}ȋMĉMM}UtK#B  M}]ԋM9M  }uE@EGMu+;uvu]+]]܋˸   ;Ev-+EM荌tC;s;v+C;r˸      P諳#
L
HU
PU@    p#tHM䉌0MihlM+M]닌lًhlQMM9MủEȋE}uUU+ЋMMIMȻ   ]؈i9}   ƅhc,+M}fOhMЋ9+}MfyflEʺ   ȋ;}s'M̉UUȍhlS};rM̋M􋔍0M   3΅t3΅uMI#;t&ȋU}O+ʸ   H#;0u}UMM#M}G;GMЋ	;M   s      hMЋ		UVE#tpPc#u+^ÐU WVS
E
E`
EEEXPEEEXPE}E裼`
  E    E9EsJu}]`
;	s@`
ԋ
j   ;rȉu}]M#MEȉEE=      u]}=c   d  O+;s?E`
;	s@`
ԋ
j   ؃;urǋEf#EXPɋG<=   wu]}MIUU)u=   u'Ef@M舁ЋE}   =     9EsHu}ء`
;	s@`
ԋ
j _  ;rȉu}Mf#EXPɋURʉMȋUU)EE9EsK}]u`
;	s@`
ԋj   ؃;rǉ}]uM#MEȉEE=      u}]=c     K+;s?E`
;	s@`
ԋ
j Y  ;urǋEf#EXPK=   wu}]MIUU)u9EsH}uء`
;	s@`
ԋ
j   ;rȉ}uË}MA+Ef#uXP+؋΋EE)u  ;vǾ   +;uvu)u+;rVЋPЋP艭ЋЋCGN#u   u=`
  +} uE裼`
E
E
+   [^_ÐUWVS5
`
E΁   
+s9`
;	s@`
ԋ
j 
  ؃rs:`
;	s@`
ԋj M
  ؃rƋ;t*   }E`

5
+[^_ÐO#t։}}s;`
;	s@`
ԋj 	  ؃rňЋG   u=`
_
  +EM#u\U  WV+   F   |   }	   F   |     }F  |   }   +΍󫉕||PxPhOh`Oh  h   W #t+   PZ         +      +W󫉅tt_PpPhPhOj jWxt|pP#uxp+^_ÐU  WVS=
5
s:`
;	s@`
ԋj   rƋ%     Es:`
;	s@`
ԋj u  rƋ%   @Es9`
;	s@`
ԋ
j &  rǋ%      }    }  +;scEs:`
;	s@`
ԋj   rƋ%   OC;]rs+OCrǅ   PPj j jjPe#t     MM싕UXPE++;E  EM;s?`
;	s@`
ԋj   ;rU#׋ЉL+Ls-MC  E      E     s9`
;	s@`
ԋ
j   rǋׁ   JD;E  J#%  ECI#uk   s9`
;	s@`
ԋ
j   rǋׁ   JD;Ek  J#+CI#us9`
;	s@`
ԋ
j   rǋ%   HT;U   эH
#d+CI#uN;]==
5
|PPPhOh`Oh  u썅P#tnuh+h`	膣   u h+h`	`         PPPhPhOj uE썄P#sF#u+[^_UWV=
5
s9`
;	s@`
ԋ
j   rǋρ   ENs;`
;	s@`
ԋj   rŋ%   =
5
=   u!#t=   t   ^_ÐUWVS+=`
=
=
+ۍu=
V#u<
;v؃} t܋
r`

H`
s  +[^_ÐUWVS
    	#tH=tAԋ}uPSW  	(	h   SV	#t=u=u=
 t.  (	+[^_ÐUVSU#u%TM#t33PBI#u裄T5[^ÐU+`
`
	(	UV+ɉ	
   +PԋP5	.	#t=t	ȁ   r#u} t#`
   ԋ^Ð/  	אU졼`
#t)Ph
5`
o   `
(	`
    ÐUV`
#tCP5ЋV`
=4C uPV5`
   `
(	`
    ^ÐUWVS}WuV]S);t#؃u  +WVu;u[^_ÐUEЊ
"tt 
B
"uUVj/uV#tp^ÐUVj.uV#t;u@H8.u _;u^ÐUWVSE E+uyE#u'+u+
    E[^_Ðu0@P  uVxE> t8+SV> t!h+V"t FG"u#sMǉj@P#uhT   EMEM#}hTm   E Eu#~(h+V肟3F"tF"uO#؋EM#UMI#uUuh0	5h ,h`	\ÐU=,C u#uuh0	5h,h`	谜=DC u
DC   UV5h,,5`	V}0	=
 tPPh8,VT^ÐU5hX,h`	0h
賜ÐUWV}#   +  ǙȋƙuH#}/#}Vj-)F@F@-Vj #|F@F@ 
   ǙRPhd,V萛^_Ðu  u+ƍqUVuT#uhT9^ÐUV=T u/T      ht,h`	E9Et5DC   ^UDWVS`
;	s@`
ԋ
j z8Cȁ   Tȁ`   t?=,C u#Qh0	5h,h`	肚8C=DC u
DC   %   8C   ȋU=   ~`jPh0	5h,h`	+5DC   ,}ȃ=4C u#~Wh
u=(	+[^_Ð	EE	     EEEE    +`
=T t     Eh   j hk   ЋH#}}ȋEЉEċEԉE̋]=	   u}ȋEEċEE̋]} !=	cMMEWu}ȋEEċEE̋]h   j hޚE   Nޙ+	     EE؋=	++;}0ԋԋ@;|=	+@s>h   ԋPu螙E=u=	}=	E} t++	C+;u}ȋMĉMM̉M]E܋E9E   MՋԋ֋؋M   #]؋EE}      |hT]]
G<PV
P蒙];]}Ef]EЋC]EEE;EEu}ȋEEċEE̋]=	Nޙ+C˸   H;8CE   u=T ]5

;]|R;]~D=4C u#~Wh
u=(	=C tTTPNE]ЋN   r]ЋN   sE

+ƍ8 @  ظ @  +;~#~SV
P, @  |"=4C uWh
u=(	+

+#]UWVS8    +ɾ   =`
	;sG=`
ԋj i8=`
	ȉ8F~;sG`
ԋj %4ȃ~h UP4+   ;>`
;	s@`
ԋj 4dF;~   ~hXU4d+   ;X̅<d#~Aء`
;	s@`
ԋj Q4CO#ɋË4F;~d[^_ÐUWV+4|)̅dO}~      
   ;/+ϋdH#tJ
H#u5G;~Ӎ
;vJ ;w^_UWVSE	E`
A+҉   =HE4dHEE`
y=`
̅4Ћ   u=+։;}Y`
;	s@`
ԋj =ȉ;|+ϋ#]
#~+r}F<}   ;}N`
;	sA`
ԋj 9ȋ;|+΋#;r;];54(	98th|U+[^_UWVSPuHL;~r   `
+ffP;	sB`
ԋj]fPLuL    +ۉ=Hσ+ΉHffP[^_ UV   E+5PP/^ U+fPLHjÐU   WVS+   I}f+;UsME4fDuB;rM+fu      D}ȋ+L}fL}GvfEf#thU}   +ǉE      ;w&u\Uf\U+ʋf\UB;vuw   +ʋf\UBvT}M#tϋ;t+ɋ]fSB;uU   ++;Msj}+MEEME#tC|EDEǉEE9Ew?;}sEM+ϋ]<{f	MfEMfLEEE9Er[^_ÐߋMEx}+}#tff#uf4Uf4UfB]t	EEO#uUWVSuV#u~V+};}ύX+ù   =Tf;};}+WX+_hTjhXW[^_ +;}E}fPu   tCfu}   CPOXF;ujX#|ƆX FK#};u|GUWVSj	#   j	+  +W
++_ǹ   +W<u	f_D  }  +΍
+h	jh
h  z[^_Ð+;}fPMT|(   ft]
]}XP :#u   jXtj	XK#|Ƈ
 GK#}

G;a
UVT#uKjhT#u  
P^ÐjjjYdjjjITHTfP4M	  r   ft4u4u  syUVfP4MTr&   ft
4u4usXP#tN   Ql^ÐUT    U+D@ÐUWV+DHD#|6U<}2@%  <F;   DID#}k=  t=   wM1F;uuw@   hD+I  <DID#|}M7@%  <F;tDJD#}k^_ÐUWVSE	u5`
=@ u6=Ћ    WS=4C u#tPWV)=@ t+[^_ÐU+MA"t@A"u UM"tU;tA"u+ UWV=pM5UD;s#:028;r=p5U+lǣpD;s 28:0;r=p5U5lD;s2
0;r^_ U$WVSU    =U ux   =U=l=px    +ҋu<-u(t   
t    Fu6t    *<+thUx#uى=tx#t	:   Uu=tuPl9p   ;   u~Up@U;}M9-uy tl;t_hU}4XȡU#uA@Upl;t;tWp
;t;t5l5U;up;lt*U"}4>-uN"z  =t uk  @UU   N  =U tU47h-h`	b5xxU+	  RQh4-P35xx+  :     u=U tt7h-h`	5xx>:t+  +  RRQh-P諆UxU@U+T  =U tWE0h.h`	m=U+%  U@Ux      ]#t-u   +Tx]#E  U}4>-1  ~-t
} !  UE    E    E    E    "t<=tMA"t<=uM+#   MMMMMM	xM+QRP蹅#u-E+xE39Et6} u]uE   F#uEEEEEEEE]uE   } t
} }U}    u@UMQM9 ts#t+MAUh;E@UUJ=U ot`	U~-DRRQhd-Ps;t5xxE#t0EH@#p[^_Ð} t$y-tx PuV#uKU=U V4x`	~-"RQh-Pу!u	xBxWV}x: uU#:x:3
x:u)"tUUU    U";EuB=U tWE0h(.h`	=U>:u:   +@UEUUj j j uuumUj uuuuuOÐS    [ú     у: tQ[   S    [Ò     у: tQ[    usage: %s [-%scdfhlLnN%stvV19] [-S suffix] [file ...]
      %s %s (%s)
     %s
     %s %s (%s)
     %s
     %s %s (%s)
     Compilation options:
%s %s      STDC_HEADERS        HAVE_UNISTD_H       
       .exe    un      gun     cat     gzcat       .gz     %s: -Z not supported in this version
       %s: option --ascii ignored on this system
      %s: incorrect suffix '%s'
      aaaaaaaaaaaaaaaaԬaaaa0aaaaaaaaaaataaaaa̪aa$aTal%s: compressed data not %s a terminal. Use -f to force %scompression.
      For help, type: %s -h
      stdin       stdout       OK
    
       -       %s: %s is a directory -- ignored
       %s: %s is not a directory or a regular file - ignored
      %s: %s has %d other link%c -- unchanged
    stdout      %s:     %s: %s compressed to %s
    %s:	%s       OK      -- replaced with %s    
       %s:     %s: %s: warning, name truncated
    z       .gz     %s: %s: unknown suffix -- ignored
      .tgz    .taz    .tar    %s: %s already has %s suffix -- unchanged
                  %s: %s: unknown method %d -- get newer version of gzip
     %s: %s is encrypted -- get newer version of gzip
       %s: %s is a a multi-part gzip file -- get newer version of gzip
    %s: %s has flags 0x%x -- get newer version of gzip
     %s: %s: part number %u
     %s: %s: extra field of %u bytes ignored
    PK    PK                      
%s: %s: not in gzip format
    
%s: %s: decompression OK, trailing garbage ignored
    method  crc     date  time      compressed  uncompr. ratio uncompressed_name
                                   %9lu %9lu       %9ld %9ld        (totals)
      %5s %08lx %11s      %9ld %9ld        %s
    .tar    .tgz    .       %s: %s: cannot %scompress onto itself
      %s: %s and %s are the same file
    n       %s: %s already exists;       do you wish to overwrite (y or n)?     	not overwritten
       %s:     %s:     %s: time stamp restored
    %s:     %s:     %s: %s unreadable
      .       ..      %s: %s/%s: pathname too long
       
%s: %s: not a valid zip file
      
%s: %s: first entry not deflated or stored -- use unzip
       
%s: %s: encrypted file -- use unzip
       len %ld, siz %ld
       %s: %s has more than one entry--rest ignored
       %s: %s has more than one entry -- unchanged
     incomplete literal tree
        incomplete distance tree
       	       	       	      
%s: %s: %s
    %s: %s: warning: %s%s
      
%s:        %s: unexpected end of file
     
%s:        %2ld.%1ld%%     output in compress .Z format not supported
     
%s: %s: warning, unknown flags 0x%x
       
%s: %s: compressed with %d bits, can only handle %d bits
      %s: option `%s' is ambiguous
       %s: option `--%s' doesn't allow an argument
    %s: option `%c%s' doesn't allow an argument
    %s: option `%s' requires an argument
       %s: unrecognized option `--%s'
     %s: unrecognized option `%c%s'
     %s: illegal option -- %c
       %s: option requires an argument -- %c
      ?        ƣ֣&6FVfvƤ֤&6FVfvƥ֥&6FVfv??   w     !   !o o         
                        T>   h           H                                           ?!?            BBLBBAAA`AA@@@`@ @       Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.       along with this program; if not, write to the Free Software     You should have received a copy of the GNU General Public License           GNU General Public License for more details.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       but WITHOUT ANY WARRANTY; without even the implied warranty of      This program is distributed in the hope that it will be useful,         any later version.      the Free Software Foundation; either version 2, or (at your option)     it under the terms of the GNU General Public License as published by    This program is free software; you can redistribute it and/or modify    Copyright (C) 1992-1993 Jean-loup Gailly                                                                      E        a   E        c   E        c   tE        d   hE        d   `E        f   XE        h   PE        l   HE        L   @E        n   8E        N   0E        q   (E        q   E        r   E       S   E        t   E        T   D        v   D        V   D        1   D        9   D        Z   D       b                   bits    lzw best    fast    version verbose no-time test    suffix  recursive   silent  quiet   name    no-name license list    help    force   uncompress  decompress  stdout  to-stdout   ascii   r           IHHHdH8HGGGHGGFFFdF@FE     file...          files to (de)compress. If none given, use standard input.  -9 --best        compress better    -1 --fast        compress faster    -V --version     display version number     -v --verbose     verbose mode   -t --test        test compressed file integrity     -S .suf  --suffix .suf     use suffix .suf on compressed files  -r --recursive   operate recursively on directories     -q --quiet       suppress all warnings  -N --name        save or restore the original name and time stamp   -n --no-name     do not save or restore the original name and time stamp    -L --license     display software license   -l --list        list compressed file contents  -h --help        give this help     -f --force       force overwrite of output file and compress links  -d --decompress  decompress     -c --stdout      write on standard output, keep original files unchanged   18 Aug 93       1.2.4       18 Aug 93       1.2.4       18 Aug 93       1.2.4       UTIME       DIRENT      GZIP    ab:cdfhH?lLmMnNqrS:tvVZ123456789    ab:cdfhH?lLmMnNqrS:tvVZ123456789    read from       written to      de          fstat(stdin)        	       		      JJJJJJJ    _z  -z  -gz .tgz    .taz    .z  .gz JJJJ    .Z  -z  .z  .gz corrupted input -- file name too large         hK`KXKPKLKHKDK@K8Kdefla                   lzh     pack    compr   store   name too short      can't recover suffix
       .       internal error in shorten_name      de                                                                             bad pack level                                                                                                                                                                      	   	   
   
                                                                                              {|vTL           zvL              hu    @M               	
 block vanished          -l used on binary file              out of memory       invalid compressed data--format violated    invalid compressed data--length mismatch    internal error, invalid method      invalid compressed data--crc error      invalid compressed data--length error                          	      
                                       	 
         # + 3 ; C S c s                                                 c c         	    ! 1 A a    0@`                        	 	 
 
              ?   ?  	          0w,aQ	mjp5c飕d2yҗ+L	|~-d jHqA}mQǅӃVlkdzbeO\lcc= n;^iLA`rqg<GKk
5lBɻ@l2u\EY=ѫ0&: QQaп!#ĳV(_$|o/LhXa=-fAvq Ҙ*q俟3Ըx4 	j-=mld\cQkkbal0eN bl{WٰeP긾|bI-|ӌeLXaMQ:t 0AJו=mѤjiCn4Fgи`s-D3_L
|<qPA' %hWo 	fa^)"а=Y.;\l ұt9Gwҝ&sc;d>jmZjz	' 
}Dңhi]Wbgeq6lknv+ӉZzJgo߹ﾎCՎ`~ѡ8ROggW?K6H+L
J6`zA`Ugn1yiFafo%6hRwG"/&U;(Z+j\1е,[d&c윣ju
m	?6grW Jz+{8Ғ|!ӆBhn[&wowGZpj;f\eibkaElx
TN³9a&g`MGiIwn>JjѮZf@;7SŞϲG0򽽊º0S$6к)WTg#.zfJah]+o*7Z-out of memory       argc<=0     out of memory              corrupt input.      corrupt input.      corrupt input. Use zcat to recover some data.       invalid compressed data -- Huffman code > 32 bits       too many leaves in Huffman tree     invalid compressed data--length error       Bad table
                     POSIXLY_CORRECT     --          @(#)crti.s 1.4 94/08/22 SMI @(#)libc-i386:libc-i386/csu/crt1.s	1.18 @(#)crt1.s 1.3 93/12/01 SMI as: 3.0.1-alpha 03 Oct 1994 @(#)values-Xt.c	1.6	89/10/24 SMI @(#)synonyms.h	1.1 @(#)math.h	2.3	93/09/07 @(#)floatingpoint.h	2.3 93/09/07 SunPro @(#)stdio.h	1.34	94/06/07 SMI @(#)feature_tests.h	1.6	93/07/09 SMI @(#)ieeefp.h	2.3 93/09/07 SunPro acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE ../src/values-Xt.c
 as: PC3.0.1 21 Jan 1995 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)signal.h	1.31	96/05/20 SMI @(#)signal.h	1.50	97/04/16 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)procset.h	1.17	96/04/24 SMI @(#)stat.h	1.21	96/06/03 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)dirent.h	1.24	96/04/25 SMI @(#)dirent.h	1.25	96/08/06 SMI @(#)utime.h	1.8	92/07/14 SMI @(#)utime.h	1.8	92/07/14 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE gzip.c
 as: PC3.0.1 21 Jan 1995 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE zip.c
 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE deflate.c
 as: PC3.0.1 21 Jan 1995 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE trees.c
 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE bits.c
 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE unzip.c
 as: PC3.0.1 21 Jan 1995 @(#)types.h	1.51	97/05/06 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE inflate.c
 as: PC3.0.1 21 Jan 1995 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE util.c
 as: PC3.0.1 21 Jan 1995 acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE lzw.c
 as: PC3.0.1 21 Jan 1995 @(#)types.h	1.51	97/05/06 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE unlzw.c
 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE unpack.c
 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE unlzh.c
 as: PC3.0.1 21 Jan 1995 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE getopt.c
 as: PC3.0.1 21 Jan 1995 @(#)crtn.s 1.4 94/08/22 SMI ld: Software Generation Utilities - Solaris/ELF (3.0)  .interp .hash .dynsym .dynstr .SUNW_version .rel.ex_shared .rel.bss .rel.plt .plt .text .init .fini .rodata .got .dynamic .exception_ranges .ex_shared .data .bss .symtab .strtab .comment .stab.index .shstrtab .stab.indexstr                                                  Ԁ                     	                                                                                   o     "                   -   	        "                 <   	      00"                 E   	      HH"  h     	         N         #                  S         &  {                 Y         !  '                  _         !  *                  e         !  j                 m         T>T                   r         ?                  {         ?                             ?                              ?د                            U  
                                                                                   07070100106fca000081a00000007000000064000000013a36b00a00010d0c00000020000001f800000000000000000000001500000004reloc/bin/gzip.sparc  ELF               @   4 	L     4    (        4  4                                                             O  O           P P       !0                              /usr/lib/ld.so.1                       Z                                         N   ;      |       7           d          >                                                       V   u                                           ?      f                             F   P          3      Q       A       [           $   1   q               X   S          g                   Y              a                                     .                                                       U                        =   o       &   {       h                 n      k                                 ~       C                                            B                                t                            _   2          *                            m                        G                                                                                                                                                                                                                                     -                           /   9       5       :       @               D                                                                           4   6   +                               `   O               ,           (           <                   l       L                           !   c   W   '       v      ]       i       %       p       y       M   w       b                       \                       "       0                        J   s           R   K                 j                                E          #                    z              8               H                      e           }       r          x          ^   T       I      )                                                                                                               @      	           
                <           @           D           P           T                      ݄           ݤ                      (                                                                                              $         P         0                  Ϥ     	   $ @     	   + &        4 &        ? ۘ          D ܔ          K           P    4  	   \ &        h &        q X       z &             	    ݤ                              @!                        &                                   ܬ           P          4    	              T  	  # &  	    + 0   `  	  2 )       > )       G          N )       W )       ^ ڄ         e ڐ         j        p )       x )  @    ~         d                	   T                  D        T            	      8  
       	   L                  h   h  	   X          X        ܸ               	   \                  `       " d       - <    	  ;        C (       K h       U l       d @       j R   8  	  u    "     yL  `  	           P    	      P  	   H        p                |          T   T  	   H  	\  	      P  	   4        Z    	   p                 
 t                           x       ) ۀ         0   @    6          < 8       D <       K ۤ         Q h         X        c        i p         o ۰         w        ~     	               	       h  	   ~0    	     H  	           ڜ               	      d  	      \  	                 ݤ   !     ,                                          D                 #        /    4  	  5 P         ;          A        P \  $  	  ^ (         c        j ,    	  q 8         w D     	                        S    	               ,  	                      ,  	   wp    	                               Z   h  	   %         T         (   ,  	   4                 $   H     +           <          C    0  	  M        S   L  	  ^ O        e        p @       }                   ,        h        t          ϼ     	   c    	   &  	!     ܈            $  	   l        #     	   p        t        ܠ                       $  	   T        @          ڴ          ۼ         ! x       ) ݨ       8 \         = ی         C    8    I |       P      	  U L       ^         h }   @  	  p          v ڨ         ~ g  t  	             `   t  	         list total_out do_lzw ascii getopt _start bytes_in foreground read calloc atoi write_error last_member z_suffix longopts progname inflate_fixed _environ _end block_mode _iob decompress work time_stamp _ex_register readdir __flsbuf _GLOBAL_OFFSET_TABLE_ inflate_codes lbits make_simple_name __ctype strlwr prev_length strstart signal read_buf window atexit exit force decrypt inbuf optopt malloc unlzh prev opendir exit_code block_start unlzw _init add_envopt .umul ext_header read_error .mul ifd .urem inflate_stored match_start .rem good_match nice_match check_zipfile no_time verbose bytes_out save_orig_name level abort_gzip mask_bits ct_tally to_stdout copy_block flush_outbuf args ifname ___Argv getenv lzw _getopt_internal bi_windup test lm_init max_chain_length strncpy env _DYNAMIC strncmp file_type printf __iob chown maxbits method ctime strcat ifile_size dbits write strrchr insize unzip file_method display_ratio warn send_bits inflate_block d_buf _exit inflate updcrc write_buf _ex_deregister environ perror bb errno pkzip bk unlink __cg89_used __cg92_used error lstat utime __fnonstd_used longest_match free optind unpack close fill_inbuf closedir open zip optarg bi_reverse window_size hufts clear_bufs flush_block strcmp fgets opterr file_read _edata _PROCEDURE_LINKAGE_TABLE_ xmalloc memset ofname outbuf __fsr_init_value strcpy huft_free inptr huft_build _etext crc_32_tab _lib_version istat fflush quiet z_len memcmp getopt_long deflate _ctype strspn inflate_dynamic header_bytes main key ofd .div chmod basename remove_ofname memcpy strlen strcspn part_nb __environ_lock stat lseek _fini outcnt copy total_in recursive bi_init fstat fprintf ct_init isatty flush_window no_name libc.so.1 SISCD_2.3 libc.so.1            zt           ݈       ݄  4       x     &  ;     ڄ  B     ڐ  C     ڜ       ڨ       ڴ                ?       u       r       &                                  ,       8       D       P       \       h  }     t       ۀ  w     ی       ۘ  $     ۤ  |     ۰       ۼ                                     y       K       5            (       4       @       L  Q     X  T     d  H     p       |  k     ܈       ܔ  %     ܠ       ܬ  6     ܸ  V       Y      @D  "aȥ, @'  $+   `      -` `?-)  !-    /%    +   ` `?`5    +  aĨ %@ #    @ n     t@ n @ +       @     @ n   @ n     a  t `D   b   c   c @ n 㿠 !  #  t     `|   ɖ8#@@ n                t@ nx `     2    㿠 !  !  t     `   ɖL#T@ nb             t@ nY `     2    㿠 !  t      `  ɖ`#h@ nE  t    `t  @ n=|   t@ n9 `Đ   t@ n5 `  t@ n2   <  <  <  <  <  <  <  <  <  L  L  L  L  L    L  L  L  L  L  L  L  L    L  L  L      D  L  L  L  L    L  L    L  L  L    L  L  L  L  L  L  X  h      L    L    L  L  L      (  L  L  X  p  L    L  ԝ㿘'D1  'H@  ` &"@ m"쀢   "  t " @ m `耢   D" *?DH  @   c "atat    H  ""H @ m̒      ɒ  """Ā      T"@ m  @ m      T"@ m  @ m     t  T"@ m   t ` @ m"쀢     t ` @ m"쀢     t" @ m `     t `@ m"쀢        ""    ""   ""  ɰ"  t  a@ m @ mu  1  "ch  #D"X  @ *H? 3  5  H" 1`E *`@
@
       ""  @ mg     y"b8    u""    q""  "` l""   @ 0   gc   ""   ""    \""$   @     Wc    R""   O""   ""    H""  ""   C""   "",   =""(    9"" 7  @ m    "ch b@ m  /c   ""   ""    $""4  "(`""(   "",   @ 
   c   t aa  @ lJ   @ 
Ԑ  c" 0   ""@@   @ 
ʐ cD"X  @ *H?q  "` 6     b""  "`  1    b"" 3  D" 	b      ",   
    t aa0  @ l #h`    b`   #h         t aa\  @ l @ 
   "0      "      j#T   "# )   "  "     "4  2     "$  2     "  2 b  D@      &  * H@  	  D@&     @       "$   1    ",   	1   1  ?@ "?1  @ 
8"D"D  㿠  "   65    "$   15  1  "      a  a@ lH
    #5  "     # "  #"     t   #  # ! ax 1  @ l"  t a @ l"@ 	 5         "  "4      "$   	        " ap  t@ la  b  t@ la3  1  &b"$     "   ?  b @ k
!      @ _ c # ?&b @ +""   "" "#x  " "$ @ !X  "b<b<  6 "$  @ 	"D"$    !X  "<@     
!  
a؟       G   `  "  bȀ`   b ܀	  @ !X  "b<b<   1 "!h 
! 
a  ؟      "    b(`       b4`   !  t@ kt!    !h cl" 	  b" 
  @ ;b  t@ ka!    t!@ k`     1  "&"  " @       `  <
@  	2 *`  "    | @ "@ Ґ x@ /     ",        t  aa  ɖp@ k$  "D`     ""D  
@   @   ",        t  ab  ɖp@ k	  "D` x    ""D  `  (  "  2 %`0  "     ",     `      s`  t"   abT  ɖp@ j  "D` N    ""D  `0 ""  "     "$  2 `@   `@  9  "b"     "$        "4     b  t@ jȒb  @ 7          !X  "       " !p @ j!&    ?    t ab  @ j@ j    ""D  @ 5   "#x     @     "b<b<     @ j    "$   	    @ Gb<@ j    "    
!  #"#t@               !l      "(      ",       t  ab  ɖ "@ jD !l` 2 
    b   "  "!l  "(  "   @ j4       @ j-             t ab@ j      ct؟       #  "   "  "Ȁ    " b܀@ 5 @ X  "b<b<    "!h X  ct؟          ?""<@ j  "      @ j
#t     @      "<?   "   L    @ i b܁  "(  " >"1  "4     a  t@ iƒb  "4  "       "cl" 	 ah" 
 a@ ah "4  !hcl" 	  b" 
 a@ ~b"4    "   	   t ab @ i  a  t@ ib"      @      "  "  2   @       `  7  " &T#t %@ i!&` ` ? Ht@ i`    - @ &t  " K         @ i` @ i @ < @      "&T 7 ",        t ab  ɖ @ iI  "D` 2 )   ""D     t ab  @ i9@ iX  @ iX!X @ iU#t@ iV    ""D @ iI  @ iI!X  ""D  @ iB!X     b   b`     b`   @ i8  @ i8 x   $  ɐ b  t@ i	c    " `@ i      @ i    @ i&  @ ѐ@ hܴ ܲ  @ h     &J 	 /"  &@@ h      &        2    㿠  !p   H@ hې           "   9 "Ѐ  5      	   @ hϐ    ""D @ h   ɶ  b  t@ hc  "    @ h     }     "   .     2     @ h b@ h    ""D @ h    ""D   㿠 " ap @ h g    "   N   5  " `    b$` 2 l    b4`        b(` 2   "   2 \   ",  2 W   ",        t ac  ɖ @ h>  "D` 2 E  ""D @    t#,@ h5    
  t#4@ h/      t /.    t#<@ h5  *   !  "(     "        ",        t acD  ɖ  @ h  "D` 2   ""D    "!l @ h' b̰    㿘9  "   '   "   #1 "3 b܀@ 	 
bܒ &bܒ a
 	 /@ A /"b܀@ 	 
bܒ &bܒ a
 	 &/@ 2  "/1 "3 b܀@ 	 
bܒ &bܒ a
 	 /@    /"b܀@ 	 
bܒ &bܒ a
 	 /@   /  "<?  t&`  #x `"#x  cp"#l5  @ g&Ȁ   v  t ct@ gĔ    o  u `@ g    1 "܀   
  u a`@ g      a   &""#@      ?&`   u `@ g    	  m",  "#ؐ &` `   u `@ g      j#  "#ؐ &`  &`   u `@ gy      q    "#ؐ &`  &` "  "`   "  "`   "$  2`   h"&`   "# ""ܐ &`  "Ķ"  @ 	 
  &  a
 	 &` @ w  &` `        t  acxp@ g`    ""D?  a   "#  @  
  &  a 
 	@ S  
        t  ac  ɖp@ f   ""D?     t  ac  ɖp@ f   ""D"   ?     u  a`(  ɖp @ f   ""D" 4  ?  @ 	 
  &  a
 	  @ 
     @  
  &  a 
 	@   *    @  
  &  a 
 	@   *    @  
  &  a 
 	@ ސ  *  " 
   b` 2    "b  @ 	 
  &  a
 	  @ Ő    @  
  &  a 
 	@   `  /   @ 	 
  &  a
 	  @      @  
  &  a 
 	@   *    "(       u  a`\  ɖp@ f"쀎  E   @ 	 
  &  a
 	  @ x     @  
  &  a 
 	@ j  *    "(       u  a`t  ɖp @ e쀐  &  
!  @      &  
 @ H   ' 2   U   "   <  "     "$   5 
 #x  /9   @  bܰ   " 
!  @      &  
 @   * : .  N    	  * @ 0 D   "$`   `    ""$ 
!  @      &  
 @   * :   2   $   @  
  &  a 
 	@ ߐ       
!  @      &  
 @ ΐ    2  #x 2 `    "#l`     `   #x     u  a`  ɖp@ eH   ""D?  ",        u  a`  ɖp@ e5  "D`      ""D?㿘   ``  `  ` " `  "(       u@ eQ a  ",   7   u@ eI a4 2  0 3  bL      1  "P        "(     ubL ad@ e2"P bL  ",  2 bL  ubL a@ e&"PbL  cl a" 	"P" 	@ "P  u@ e a  !h  ɴ"?&  "?` 1&   "Ȁ   -  ɐ ?@ e &  ? $    &  @ d  " @ l   *  	*`@
*` 	*  	*`@
*` 	&   @ d b*    "(     u.`   `d 	  u!@ d˔   u  a@ d  ? 
  ?""L "#l& &   "L` &  "L @
""L ? 
  ?""P "#l& &   "P` &  "P @
""P   cl a" 	 " 	@ 5   u a @ db܁  `  	   `                          @ dE  |N @ "x @ dc.   xܐ       .    .                  㿠@ d"    "          @  ` *?    2 .`   @  `.`    
"!l  u!ȴ&`@ d    ?  u 3  u@ d6 / "     J     a@ d-  4 &N   2 N   a؀         O /  O     2O  ' J @ d
  2 N   @ K `N   " &   @ cГ"̲!@ c͑  " "ܐ x@ c&     5     N2     @ cВx  2   5      Ux    s  @ cx        b2x   ( !p @ c                  u aa  ɖ @ cm    u ab  ɖ  @ cc   ""D   "   =(  u@ ck b( !  u b,   ɖ @ cM  "Ā      @ c]
!     ɐ   u@ c> bD@ c  a(@ c O  ɒ"O(
 	`  y    y     u@ c' bl  "D` 2   ""D  @ ci!@ c@         u ab  @ c@ c.    ""D   㿘`8 '`@'@ cP   #   `  <
 	  @    1  ",   
     u ab  @ b  "D` 2 ", ""D",       @ b b܁  㿠  "      "` "  " @	"  "& @  "(  
    u ab @ b "ܐ   
/@ c      3  b,   
     u ab  @ b  "D` 2 b, ""Db,    @ b   @ b    ""T !p @ bْ!@ b       3  b,   
     u ab  @ bz  "D` 2 b, ""Db,      @ b                    㻠@ b      u  b  @ bZ   ""D  @ b3  u  ;    / 
b@ bQ    .     u"@ bJ    '   @ bB  @ b? @ #  @ bJ `   /@` @@ bA ͐        u b  ɖ  @ b   ""D@ bt  ˸ 
@ br   㿠3  `    &`3 at  " 3  @ beat&at3  bH      @ b]bH&bH@ a  @ a  㿠  "T       @ b#t @ b bב 㿘 77% "!X "#t  $| "b< |ܒ $|  9  J`  
`* | 2 |@ e   | $|  J`
`* | 2 |@ X   | $| * |  7 @ M   l  2  | $|* |    @ ?     #| : || $|  b
* | $|b?*@
*`2`:`
`*   | $|1  "
`* | 2 |@    | $|"?*@
*`2`:`
`* | 2 |@    | : || $|  b2
* | $|b2`*`2`:`
` *  $|1  "2`
`* | 2 |@    | $|"2`*`2`:`
`* |    @      @ z  !  $#(@ 
 !  @ s"<!  @ @"@| $|, | 2 |@    | $| * | 2 l@    l  " |! @ !p |   &  N 
`*    2 N @    N   2  |7 @ 8&l!  #|   | bܒ $|  c(
* |$|c(?* 	* 2 : 
 * $||3   $|c( ܒ
`* 1  | 2 |@ f   | $|c(?*@
*`2`:`
`* | 2 |@ U   |   | bܒ $|  c(2
* |$|c(2 * 2 : 
 * $||3   $|c( 2`ܒ
`* |1   2 |@ +   | $|c(2`*`2`:`
`* | 2 |@    |   | bܒ $|  b
* |$|b?* 	* 2 : 
 * $||3  ɒ $|b ܒ
`* 1  | 2 |@    | $|b?*@
*`2`:`
`* | 2 |@    |   | bܒ $|  b2
* |$|b2 * 2 : 
 * $l|3  ɒ $|b 2`ܒ
`* |1   2 |@    | $|b2`*`2`:`
`* | 2 l@    l @ &l  㿠  ! @ `=!X ?         @ : !  $#(!  "@$"    㿠&   5  @!  @ n! !   $#,! j!T@ `A    .  `%    $0#  `%  $`#  `%  $d#  ` #  $ap`  * 2  
6`  	   `  * 2 6`   !  ʰ#4$!! $!T!  ʐ!!  !   &       /   ? *  #8  & #<  !: &`    2 &` @       !: &`       &`   #  ʔ!  `  
*  	
  &`  *`      "c8&    㿠   !p    ʚa    	    ( " 	  ʒb 	 
? 	 !`@
  *0` !T&   V 

?  Q 
	   @ L 
	 @ G 
  	   @ /&	    @ )&	    @ #&	    @ &	    @ &	    @ &	    @ 
  	    @  *Ѹ &  !@   "!\ !d@  	@	
?@	 
*      㿠     1  c4" 	!" 	?   ="   ?!"@
 83  !  ʐ!!  !# !   @ _7 a\ $$a\!  $@&!# aT$! j$aT!T    @

 "@
* 
2 3   *   *!T 
  `   
  "*  2 2` `*` 3  c8      !  ʢ a1   #4 !  !     	?  #4 	&#4   &c8  㿠  ʐ "a  #4       ʶ!  ʦ!  # j!T *!T  "  ʨ?!%  <3  a* 
@ 	
 $<<*  a*
 2`*  
2   <a
*  2 a" 
   ِ 
   #4 8 #4 
 ># aa\$ @ & !  #4$@$#4!  #0  ! & a &a< a*`
@

@$<<*`@a
*2  <* a
2 2aa  &aa &aa  
 $<<a* 
@ 	
  $<a  @  !   #4$`$#4a &a     3   aT   !  aT ! 
aT$@@   !  &aT#4!     #8     !  #4!   #8       #4  e%     T   !  T  ʒ a 	!T$ @  㿠    #,   4   !T  #4   ߀   ʺ!  ʸ!  # j!T *!T  "?  #<5  *`
@

@"#<#<*`@*
@2*` 2@  #<a
* 2   "!   !!\    #0a@   "         #48 #4    a\" 	   	8 %  ! 
 K  ! H 5  ʠ$ $ @ $ #  c4$ $$c4  ʠ$ &  "  #<*`
@

@"#<#<*`@
*2  #<a
* 2 `&2       <"`       `   
` $ @ M   ,&`   !  ! @     " `     & `  `  
$ @ 2  &`  &  #4"` 
"#4  &  #4"`"#4  #4!     #8     !  #4!   #8       #4  4    	  !    ! a  @ t `    !  `   ʒ a 	!` $ @  㿠 "!x ""  ""  ""  !   ϖ   Ȕ"  ń!  Ę#T          #*     `.   `* @&.  ` `&#  Œaǐ`  . 	  Ă#  Ē"  !T     #@	@*     )    *  &) ` &#@	 9 +  Ņ)  Ȇ #@	@" *     )    "  * &) ) ` &#@	 
  2  ` `$2      6  2   *  2 2$2   !  +  `6 	@2`   `*  2 2$2` ! !  +  `6 @2`   `* !2 2$2` ! !    +  `6 @2`   `* !2 2$2` !   4!  !!  @ S!!   6  @ 9 * 4 6` `&6 @         @  0  ` a&0    `  0`   `&0`    b   0`   `&0`    0c@   b   b   b   b   b  (b̈́   (b̝㿠  ƙ.` 
   
 a.``   4 T"  
  ŕ+   ƚ 
 ` 
  (.  .` @ .  .` @2    
4 	   (     *`  
& !)   * 
`  
2     
  
4   )  "   )  "(` 
$` )  "    "   㿠      b        2`  ` $2`     "a*   Ɛ!*@
2a`"= ;`  b-   Ɛ!*`@ *@
 @ `*2 !2 *   @*22 & @"@* @@ [r#\    @ &     @ [h\  bĐ"bĨ "=̦`  P     Ȓ"  Ș"/`'` *      *#` #`+`%`@` #+33@@	+33@	 #`+`3`2 `  '   Ʋ /`! " &,- %`7`@  % * @	  
%$@ [@  @&  4 %`&2  㿀  Ȑ b    ` *`*22   $` `         	  *` + 3 @ 2* 2 6 $    㿠     !   !  & !"=& ?     $     Œ"Ș`   
  & +# +@	3  ` @&   6 $&   Ŗ"Ȓ   &     *   " +`2  +@  bȞ##b" 	    "Ě#@""  & &  2  	:  
  Ő l $   Ŧ"ȑ/ @`  " & *  &` Y `/  * "`& *`@"@ "`& *`"@@@@*25  
       
  
 /@/`2 22` &`1  ` 6` " & `* "   0 㿠   ?     (`    ?    `  I0        	   " :
 
.* @2`	*2  3@    " 	@* @*23@@`+`3` 0@
4 HD`+`3` 0D`+`3`0H       	           㿠 ?      `    P    "  `   @  " @`@
 ,   @ 6  `2  %    	" @,$`@@ '@@@ $B$`@ !    `
4 
HD@ F$`@     @ J$`@          	       `@   㿠   c@  Cb0   `  >bL   bP  ""    bl *	     &  6  *`" 	   "Ȓ@
""ȁ  㿠&!@ В &` @ ̒ &@ ɒ       ""  "l@*  @  `@&@   c@_&   \ 㿠    
"  "В bܢ * 	 !x    ?#@  @ Z     F b  C b47   Ȑ 
3  2 b   
2  	"(  @	`@	       	 @ |   /` 

?&     	&    @ 8  '    	 @ i    `4  @  ÒabĒ    	 &  @ [     "0bL `    c@  @  `Ȓ    	&      "   @       &    2   㿠   
bؖ` "bؔ a   * 
  .`@ 
*2 12 
  Ő!  D@& *    + 3  2   Đ# 
  ő:
   *   + 3 2   Ԙ "ԗ* * ̗22 
    
"
̔
*"  
"̕*
*"b؀2     И"    
͘"**͔ *"  "@  ,  b؀/ (  b *   !  aT" 	  !T     @ XQ  @ &     bԓ2`	 6`6  	        #b؀@ 	     bԀ@         㿠 #\  "ج          " O      " 
!  Š!Ȧ  2   ` 	/ `@    0=` * d@  xd`     Đ#T@  o'   b!  \  Đ#    Œ`ȑ7 
 	*  @`@  [`t`  =`  Đ"@  Q' =`
   
 @  G     @        `  `& ` a    @(`   `  `& a 6 0   @(`   `  a & 0  8   (`  ax00  ax`      b,0(   $ b,      V b   a   㿠   Ȳ"(  ȴ"$    @ M #| . * ` 2` 	* 2 6`    #@    & ` 
` b* 	  & ` :
* 	     & ` ܒ
`*  9   2  @ 	     & ` :`
`*   2  @ 	r       . 2 : 	$ * 2 6`   	&    . * ` 2` 	* 2 6`   &                     
 "`(`2 `  0`㿠1   #|"$  6  ` #@   `   &` (
` b* 	`  &` (:
 4* 	` 7  Ȓ &` ( ܒ
`* 5  `  2 ` @ 	   `  &` (:`
`* `     @ 	      "$     `   &`   
b) b* 	  ` @   @      2"(&"$  㿠  " #|  ^   #  :    & , 2`
`* :` 
` & *   ,  & 7  *  5   2  @      & ? 
`*   2  @      :    & <  *`2`
`* :` 
` &  *  & <  5  *`7  *   2  @      & ? 
`*     @      $ 5    & N  
`*     @ }    ' 2   㿠  
a" "aX  *`	  *
@
"ܒ`	"" b"܀ 	 G!  * @  *`	*` 	 ҒcP 	 7   "b<b<  "  b< "  ! !!  u#!  #  "! @ U!p $bD   
 "a! !!  u#T!  #  "! @ U!p $bD    
  @  "b   "b  ! !!  u"!  "! @ Uu!p#   $bD 㿐!   $!X  ! @ $#t    "        
!,  "     

* @

*`	*` 	

* @

 *`	*` 	  b< 2 "@      !  @ Ð!< r     o  !  @ !L j     c 
!,b<   _!  ?  ?* @   *`	*` 	 
!  2  ??* @??*`	*` 	" @  ??, @??,`,` ! !!  u#|@ T !  @ !x  &&` " #|  ʠ?; !#   b @      &  
 @ F  ` 
 `&` *@`    @     $2b@ |      !  @ R!  "   / " 
3 !  b  @       &   
 @   
 .	&b* @*`	*` 	* @*`	*` 2 	"  "   ,5  
!  ` @    `  &`  
 @   
 . 	  &* @*`	*` 	* @*`	*` 	! "@      !  @ ! !h 1  !  @ ސ!"   P  bĐ  	: J&" 
 a 

 	
@
 
*` 	ܔ
@
 

*@
*` 	 ҒcP 	2 /&"  "   !   ",     ! !!  u#!  "! @ T!p  bD  2 &" "bD &"!!  u#!  "! @ T!p#   $bD!  &"$" &"  ""     D'D'L'P'T@ TW#\   *  	 " 	`2   2 \'` \"       `       `(` # #` 
   
 
       "2 #x@ \ "    * 
* 	` @,G `* *`  ++
@ ' 
 	"
  'x|" D` "` ``2` D  `    
`* t 	" 	*" 	*` #l  x?'t  '  @   +  	#| #h `#(`@#d?#@@ " #p"  `* 	#t @` $ g/p x  @ $@ 
' &`@@      * @  	"@@
 d*  @ 
 ` @

"@  *  *  *   @ S-  *`  b\`   "`  ` #\"$" `th$`/4/'*` 	"@"` " /`@ /"  @   l| 	*    c "/L 	 l   ! *  l/ ` 7 ` #llL` " T* /` " P* 7`#l 4* 
 	: t(@*`     	*t  	2`	2		 t*@"`	@" p $@"*"   	'``/`" @p " #p27`d # `#d `# `x#` 	   x         㿠      & @ R?     㿐#\ #d " " #|  .c #`.` #h 
!  #  ʢ!: `  "܀@    ܒ " 
 @   
 * 
 `\ * 
 	  ,@ c"  `$ 7 `%: `  "܀@    ܒ " 
 @ v  
 * 
 `, @ 	*`
@ ں 	 ``7 `  %`
 ,   ! @ $#|    : `  "܀@    ܒ " 
 @ ?  
 * 
 `, %@@ 	 	 7   "܀@    ܒ " 
 @ "  
 * `@
 hd * 
 	  ,@ c" ~  $ 5  %@@:    "܀@    ܒ " 
 @   
 * `@
  , @ 	*`
@ ڸ 	   5  %@ :    "܀@    ܒ " 
 @ Ր  
 *   
 , $@5	" 	% @ @        	  $    
'@@`,` 	   @@ Q @    ` ! @ $#|  ` 󀥀ت@   "#| "" ""ԁ  㿠 " " #|  "bԔ
`"@
2 
    
!`  @      &  
 @ t  
 *  @ *` ?$ /@  7` 
!`  @      &  
 @ Y  
 *  @ *`   ?#*   7` $  ' " +&  
!  ;   !  `  @      &  
 @ 1  
 *   *` ,@`@ 4@ i&    & ߠ$ &  "" ""ԁ     "` `&"`   * 	 	"    &"    * 	 "   &"     * 	 "    &"   '||#\!  "!  #x! u!       "` `&"` t#\!  #P't!  #p \     x  xp|t       xp  㺘 " " " "Ԁ   
!`  @      &  
 @   
 *  *`  &!` 6  
!`  @      &  
 @ s  
 * ` `*`  '` ` 6  
!`  @      &  
 @ X  
 * ` `*`   6 !k'`h   (    " 
!  : `  @      &  
 @ 2  
 * @*` ``* 4`$@
" 
`     /`@ * `" 	`*  '      #\   !   .    *  Ⱥ       	 
! @`  @      &  
 @   
 * @*` @* @'
  4@	$	  	  ,  " 	 / ``  @      &  
 @   
 * @*` ``
4`$  8 ǰ  
 n`, 	"   
 "2"   b   1 ``  @      &  
 @   
 * @*` ``
4`$  8   
`" =  , 	"   
 "2"    0   ``  @      &  
 @ V  
 * @*` ``
4`$  8 g  
 `
, 	"   
 "2"     *Fb! $"! $"!  #'#\!  "!  # !    <   ! !!  u@ N#D  !  #'  #\/  !  #P!  #       	   ! !!  v@ N &$  )             㿠 " " " "Ԁ`   
!`  @      &  
 @  Ő  
 * ` `*`  7 '`  &   
!`  @      &  
 @    
 *   *`  6"̖'  뀢 ""          {   㿘 "   "#| & 7 ""̐&ذ      ؀  ؀  7  "  
 !  " & ` " "`   : ! #|@  $#|    㿠 !h " ""   "   ?  
 a   @           @&  @ N   &         ? 
 ?2 
  "Ѐ  "  @ t      "b        ?`   c   c
  (  0`2
     c  c|  b  b  ah  Ɂ b㿠 " 5   &` "" 
!`    `   @ M!X  ?" 
` ` @&` `  *` `          ?@ $     "` @
""  "" 

!  㿠1 #|        #t b@  '#| !h#|@
"!h&#|  㿠1 #|        ʲ! #|  "4      #t@  
#| !h#|@
"!h&#|  㿠  @ M    ? &@     @  @ M     J  `     ɂ bH " H H    (8(  H  2H    㿠 @ MF / 2    㿠 @ M= .      "   _"`J` . @*` "`  㿠 @ M[      7  v  @ L5  v@   @ L   J       (@ MI @L`    ,@ M @L`   " L` ,` `L`       5  v@ M      &     @ M,  2 `   @  4 b` &`  ' 6     @  + b   &      0@ M  & O    `O     2O  $   0 &`" &   &   " 2  &  㿠   v   a`4  ɖp@ Lnx  㿠  ",        v  a`D  ɖp  @ L[  "D`      ""D  㿠 !  v `\   @ LI "Ѐ    @ Lc apL    v  `d @ L:pD  㿠   v a`  @ L0 @ LN b7  㿠`   1    @ 
. " *  * @ L  	  @ L# @ L    6     &  & -*   
    &  &  *   @ Lw 
* @*`& 	  v `@ K  -@ Ln     @ Li                  㿠@ LN        b b(  㿠  c       "c! !!  v@ Kʒ         "bD p'D7  b܀@ 
   
ܒ "ܒ a 
 	     "8  #"  
 "`   `"     ",       `! !!  v !  "! @ K!p  bD      "bD  8  
 "  *@#   ! !!  v !  "!   !p"8 @ Kr  !   $"D  " !hĪ  # 	#l!#t!#x?#\ "ܒ! * #`  #   ! *! 	!T  @ K!  !  ʒ!
*	
 "ʐ # 	# 	#d`:  "Đ" 	     
!@ 
 + 	  
&
  ""#`"Ā @:     " 
! @ KXD? #    bĐ 
"b  "@
""   	7 @ KĠ$  ,  "đ* " 	  #| *!Tt  ` 
:! x
`
 *
` 
*` 	
l: 	
 \ #` a & #\!  b"8#\`-@#d` |   #"4  #         @ K(! `! l" (` @ KD $@ #` 	#l!#t!#x # 	#s` @  #h %       `  
    h `    &` "     bX  bH 	% d-?\ 
 "`"`
*` *  :"`"`
*#d   @  @ (#p     	4      @ @ Jϔ @  @& @   2 
    ' `  &`   @    ߐ   @ @ J p 6 h\/ * d2 2@/  h#\|`@4Bt %`l" . @ J   b8$@ ` #`#l  	 l#t*@"  #x*@" #t#xl##`  2`  "4      `  	     ϔ `  &`   㿠  ɴ x 
! "&  "ܸ   ` @    `  &` 
   N    *  	 &  $    ` @    `  &`  
 9     ɴ t&      !  P"      Ȑ b   ` @    `  &` 
  $    $    `  @ $  !    !  -"   ȑ* b  `"   & '   Ȥ#t  ȸ# 
 !$    $    ` @ % `  &`  
   
 ,  4    `@$$  *  "   㿠  ɚ   t`  	  Ș"  Ȗ"<  Ȕ#*`;` @ @
#"@ @
 @ 	 `  ɖ `t    `t"8 "   * 	 bܞ 	      Ȗ"  "  *@  " ` #" +  `@ $  b܀    #+   㿠! #  $!X! $#t!  $"0!  $"4 b8  ȡ, $ !  ɢ b t9   ,  $ ! 
!! "!  Ȣ"<!  ʴ!!  Ȳ#!  Ȱ#t    "8b0@  " ܀@    ܒ " 
 P     "4*`@
""4  "0`""0  b8"0 	     "08" 	  b42@
 
 	  8" 	 328-` ,   Ȫ`"0   " ܀@    ܒ " 
      "4*`@
""4  "0`""0"0      "0" b42@
  
Ԡ      t@  ;! !h#  `x@    !  "܁  #|`"#|-`

*@#|    "     "0"@t""0㿠  ɲ   ɴ   ɶ ` * * 2 6`   $ *  
! &  ` * *  2 @* 2 6`  "܀@    ܒ "
  &  &  ?  & &   4  " &  2@` * 2 @* 2 6`   㿠  #  `  <@    ɐ 0`   `   `  0'Dޒ 2  ` `(2  D    	( 7 *`@
  *22@
* 7 ޘ     + `   + `3 2 ? 	    g c    `  
  &  8 (03  *	 ("`02   (    .( 	  `*	 *`2`2   . :    *   * 2    22    `` * L   j!T *!T  " A *	@  	 	 / (*  2`2   *2   $) 2@*   /   `  	@2/ 27`2    *`  *     *  2  (2`2  ) 2 0`  *                   㿠   7      	    ɒ b*	&*	*   ɒ `2   2` ` &2`     ɲ  ,    ɠ"` : ` `` 	  ` 2  	`` $`     `, ސ   , <,&`  
    ɐ b,&,  ɲ"  ɶ ו                 㿠 	     	    b*	&*	 * ̑2     2 	&2     C   "  ɶ  *!T j!T  ɴ"` : *        ` @ 2 .  @. @ 6` 9             s   o 	   , <, & 
 ,&`  
   b,&, " "̰!` 㿠1  "     D &""    !  {     ?  " `"`&"   :`̓*`@
!*   jaT * aT    2.   
.  	!:   "   㿠  ɐ `  ɔ  :`*`@
 *    jaT * aT    2.   
.  	 :    ɐ"       &   *@@                  㿠     ""                  㿠     "   "   㿠   ɰ       &    ɐ `|  c  @
.@    
	"   7     &  <    #`   ! (  
  ɐ
 .@      " `|&  ' " 
 &    &   @.@    
  &    &     ɒ "  㿠  ɴ  "!X "#t        ʰa    "4  2 	  (   S          J     H`    ` J  ` "   J  @	 	    J  ` 2J           (    (  :             *     	     b(!      (  :             *           ⬅( ⬄ (  `       `     `  `*     㿘   ɰ"   ɶ"      "       2 '   &  &   ɒ ""&  L  -    ɦ""   L  +   ""     @ Ea c     ""    ""         J         " 2 3    "	"    	"  f  	  	"   ""  6   *  J   -2 
  *  J   2 
   &   &  &   " &     c * @ D@  2    &    "	"    	"  &  	& "	2 &  ""& &       "	"?"& ? * @J   -   * @J         * @J  -       *`  @	@ &  "   * @J   -2   * @J  - ` "      #` #\J  `    J   =   L        L   =2       $    $ ` @ D+    2 ``   $ 	@ 	      
  #\ #`   	\`` `  2  \   `              *   v@ aa$@ C` l    @&    &      q   & L    " 0         R"            * @?J  - 
   v`  aaD@ C         v* @at?J   a` @ C  1    @&      (      
    & * @   "           * @  va? a@ C`     @&  L  : ð   :      ` @&  2 %`    "    "        * @J  - 
    J     2 (           * @J  - 
   v`  aa@ CP        v* a@J   a` @ CD     c$&    &    &  J       J` `     `&  J:" I  J `:2 b J  :2     J     
    "    & &   "  &   J     	    "    &  "&           
     v ab( @ B`   " L  :2    : 
&    & * @  "  &         
     v ab @ B`   "     "  2  ? & *  @  "                㿠@      ?             㿠@      ?                    usage: %s [-%scdfhlLnN%stvV19] [-S suffix] [file ...]
  %s %s (%s)
 %s
 %s %s (%s)
 %s
 %s %s (%s)
 Compilation options:
%s %s  STDC_HEADERS    HAVE_UNISTD_H   
   .exe    un  gun cat gzcat   .gz %s: -Z not supported in this version
   %s: option --ascii ignored on this system
  %s: incorrect suffix '%s'
  %s: compressed data not %s a terminal. Use -f to force %scompression.
  For help, type: %s -h
  stdin   stdout   OK
    
   -   %s: %s is a directory -- ignored
   %s: %s is not a directory or a regular file - ignored
  %s: %s has %d other link%c -- unchanged
    stdout  %s:     %s: %s compressed to %s
    %s:	%s   OK  -- replaced with %s    
   %s:     %s: %s: warning, name truncated
    z   .gz %s: %s: unknown suffix -- ignored
  .tgz    .taz    .tar    %s: %s already has %s suffix -- unchanged
      %s: %s: unknown method %d -- get newer version of gzip
 %s: %s is encrypted -- get newer version of gzip
   %s: %s is a a multi-part gzip file -- get newer version of gzip
    %s: %s has flags 0x%x -- get newer version of gzip
 %s: %s: part number %u
 %s: %s: extra field of %u bytes ignored
    PK    PK          
%s: %s: not in gzip format
    
%s: %s: decompression OK, trailing garbage ignored
    method  crc     date  time      compressed  uncompr. ratio uncompressed_name
                               %9lu %9lu   %9ld %9ld    (totals)
  %5s %08lx %11s  %9ld %9ld    %s
    .tar    .tgz    .   %s: %s: cannot %scompress onto itself
  %s: %s and %s are the same file
    n   %s: %s already exists;   do you wish to overwrite (y or n)?     	not overwritten
   %s:     %s:     %s: time stamp restored
    %s:     %s:     %s: %s unreadable
  .   ..  %s: %s/%s: pathname too long
   
%s: %s: not a valid zip file
  
%s: %s: first entry not deflated or stored -- use unzip
   
%s: %s: encrypted file -- use unzip
   len %ld, siz %ld
   %s: %s has more than one entry--rest ignored
   %s: %s has more than one entry -- unchanged
     incomplete literal tree
    incomplete distance tree
   	   	   	  
%s: %s: %s
    %s: %s: warning: %s%s
  
%s:    %s: unexpected end of file
 
%s:    %2ld.%1ld%% output in compress .Z format not supported
 
%s: %s: warning, unknown flags 0x%x
   
%s: %s: compressed with %d bits, can only handle %d bits
  %s: option `%s' is ambiguous
   %s: option `--%s' doesn't allow an argument
    %s: option `%c%s' doesn't allow an argument
    %s: option `%s' requires an argument
   %s: unrecognized option `--%s'
 %s: unrecognized option `%c%s'
 %s: illegal option -- %c
   %s: option requires an argument -- %c
                                                     00     <0     H0     T0     `0     l0     x0     0     0     0     0     0     0     0     0     0     0     0    0    0     0    ,0    80    D0    P0    \0    h0    t0    0    0    0    0    0    0    0    0    0    0    0    0~    0{    0x    (0u    40r    @0o    L0l    X0i    d0f    p0c                               
            o  o o        L                   |   	          o   o        T                        A@                                          <    , 0 t   , 0 x                                                                                      a             c            c            d             d ,           f 4           h <           l D           L L           n T           N \           q d           q l           r x          S            t            T            v            V            1            9            Z           b                 S   0 t    @    $ X x        &      ( , 0     & 4 8 < @        l t |                                                                                                                                                                                                                                	   	   
   
                                                                                            @ 4                T                                    	
                               	      
                                     	 
         # + 3 ; C S c s                                               c c       	    ! 1 A a   0@`                         	 	 
 
              ?  ?     	       w0a,	Qmpjc5dۈ2yܸو	L+~|-dj qHA}mԵQӅlVdkbze\Ocl=c;n Li^`Agqr<KG
k5Blۻ֬@2lE\uϫ=Y&0Q :Qa!V#Ϻ(_ٲ$/o|XhLaf-=vAq *q3xɢ 4	jm=-dlc\kkQlabe0b Nl{WeP|b-I|LeMaX:QΣ tԻ0JߥA=ؕפmCij4ngF`D-s3
L_|Pq<'A Wh% of	a^)ɘИ"רY=.\;l tҚG9w&scd;mj>zjZ	
 '}DhibW]egl6qnkv+zZgJoC`֣ѓ~8ORѻgWg?H6K+گ
L6JAz``ègU1nFiyaf%oҠRh6wG"U&/ź;(+Z\j1,ٞ[ޮd°c&ujm
	6?rg WJz{+8Ҏվ|!Bhݳڃn&[owGwZjpf;\ebiaklE
xNT9§g&a`IiGM>nwۮjJZ@f7;𩼮S޻G0齽ʺS0$6TW)#gfz.aJ]h*o+7Z-                         Copyright (C) 1992-1993 Jean-loup Gailly    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2, or (at your option)     any later version.          This program is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       GNU General Public License for more details.        You should have received a copy of the GNU General Public License       along with this program; if not, write to the Free Software     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.    ascii   to-stdout   stdout  decompress  uncompress  force   help    list    license no-name name    quiet   silent  recursive   suffix  test    no-time verbose version fast    best    lzw bits        r    -c --stdout      write on standard output, keep original files unchanged    -d --decompress  decompress     -f --force       force overwrite of output file and compress links  -h --help        give this help     -l --list        list compressed file contents  -L --license     display software license   -n --no-name     do not save or restore the original name and time stamp    -N --name        save or restore the original name and time stamp   -q --quiet       suppress all warnings  -r --recursive   operate recursively on directories     -S .suf  --suffix .suf     use suffix .suf on compressed files  -t --test        test compressed file integrity     -v --verbose     verbose mode   -V --version     display version number     -1 --fast        compress faster    -9 --best        compress better    file...          files to (de)compress. If none given, use standard input. 1.2.4   18 Aug 93   1.2.4   18 Aug 93   1.2.4   18 Aug 93   DIRENT  UTIME   GZIP    ab:cdfhH?lLmMnNqrS:tvVZ123456789    ab:cdfhH?lLmMnNqrS:tvVZ123456789    read from   written to  de      fstat(stdin)        	   		  .gz .z  .taz    .tgz    -gz -z  _z  .gz .z  -z  .Z  corrupted input -- file name too large  store   compr   pack    lzh                     defla   name too short  can't recover suffix
   .   internal error in shorten_name  de          bad pack level  block vanished  -l used on binary file      out of memory   invalid compressed data--format violated    invalid compressed data--length mismatch    internal error, invalid method  invalid compressed data--crc error  invalid compressed data--length error   out of memory   argc<=0 out of memory   corrupt input.  corrupt input.  corrupt input. Use zcat to recover some data.   invalid compressed data -- Huffman code > 32 bits   too many leaves in Huffman tree invalid compressed data--length error   Bad table
  POSIXLY_CORRECT --    cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.11	96/04/29 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.12	96/04/29 SMI @(#)signal.h	1.31	96/05/20 SMI @(#)signal.h	1.50	97/04/16 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)procset.h	1.17	96/04/24 SMI @(#)stat.h	1.34	96/06/03 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)dirent.h	1.24	96/04/25 SMI @(#)dirent.h	1.25	96/08/06 SMI @(#)utime.h	1.8	92/07/14 SMI @(#)utime.h	1.8	92/07/14 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.11	96/04/29 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.12	96/04/29 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)types.h	1.51	97/05/06 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.11	96/04/29 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.12	96/04/29 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)ctype.h	1.28	96/08/21 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.11	96/04/29 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.12	96/04/29 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)types.h	1.51	97/05/06 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.11	96/04/29 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.12	96/04/29 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)fcntl.h	1.12	96/06/17 SMI @(#)fcntl.h	1.37	96/07/07 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)string.h	1.19	96/03/12 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2 ld: Software Generation Utilities - Solaris-ELF (4.0)  .interp .hash .dynsym .dynstr .SUNW_version .rela.ex_shared .rela.bss .rela.plt .text .init .fini .exception_ranges .rodata .rodata1 .got .plt .dynamic .ex_shared .data .data1 .bss .symtab .strtab .stab.index .comment .shstrtab .stab.indexstr                                                                               	                                                                                     o                          -                           =                           G           L               Q       @  @                    W            8                  ]            8                  c       <  <                     u       @  @                     }       D  D  
                         P  P                           T  T                                                      ݄  ݄                             ݤ  ݤ  
l                                                      (  ( X                               %  0                              U                  07070100106fcb000081a00000007000000064000000013a3fef8c0000276000000020000001f800000000000000000000001800000004reloc/bin/t3client.i386   ELF              ,4   #      4    (      4   4                                                         >  >           @  @                                     /usr/lib/ld.so.1    5   I   G       F   <   :   &   )       B           '   0              C   8               -   E           @       1   4   $   (               7   =           2      #   H   ,       *   D   ;       ?   .   "                                                                                                                                                                                 !           +                                     3                       5       6       %   9   A   >   /                                   Ԁ                              x                    t                              l     	     ,     
     d                              @                    h          l                                                                                                                 \                    ,     
    |               
 $          )        2         7               D   @      Z          h   |       o          t   <       {   L          d'                                                                                                                        ,          ̍                                  ܌         $    
 +        2  l     	 L  ̌       R         Y  >      `       m     
 r  l       x           *              ܍                 socket getopt _start bzero _mcount recv _environ _end _ex_register _GLOBAL_OFFSET_TABLE_ gethostbyname atexit exit malloc sprintf _init fclose strncat strncpy _DYNAMIC printf strncasecmp write _ex_deregister environ perror __fpstart inet_ntoa free close __longdouble_used optarg fgets readresponse _edata _PROCEDURE_LINKAGE_TABLE_ fopen strcpy _etext _lib_version main htons strlen _fini debug fprintf connect libsocket.so.1 SUNW_0.7 libnsl.so.1 SUNW_0.7 libc.so.1 SUNW_0.9 libsocket.so.1 libnsl.so.1 libc.so.1                                                                                                                                                                                                                                                                                                                                                                                                                                        (=
                     (=
                     (=
          l"  p1  2  9  L%  P4  T&  X  \.  `>  d:  hD  l,  p$  t3  x5  |'  (    C    H  0  ?  +  6  G  *  7    /  5D%H    %Lh    %Ph   %Th   %Xh   %\h    %`h(   %dh0   %hh8   p%lh@   `%phH   P%thP   @%xhX   0%|h`    %hh   %hp    %hx   %h   %h   %h   %h   %h   %h   %h   %h   p%h   `%h   P%h   @j j Rt;h1ETRURP)     P&j           UD  WVSE+E    uE    hV}W=td}؋u=b   u"5/%==d   t=f   t=h   thĖuu=u}؉u#t} uuhЖpjF= t.ShOuh?uh/h$S1#u)= th,jz]sE    Vjd,W#tV]̉u,CWHPWV= tWhPujdW#u닐u#uOuhh^hj'/C0$3uh$= u+;M  }u]ẺEMԋE؉EċEEhhėhȗ.  Euu   P+EE,Suhԗu= tSuhmhumEh   EujPuShu= tuhXu=j jjE=  fǅ jPfE@   j$PvjPur=  u$uu^#}= thdE   E      +hȘV/h   Pu  #      ]E܉E]
{fh   PV+SVWE@EE
  $+SWVWh   Pu  MM#= tVh̘yVhuuuEԋE9EV}uFhd.73h%}u= u}u]= uʃ} tu} tu} tu} tu+UWVS   };}o]j jEPS=   uEMAM}t5F;|.#u	u/+#= tPh+ [^_ÐMUVjhuY#uhuu:   *5= tVhj^ UWVS]SuȍD9ED9   D9$+uSh W   $+uSW@   <   uVYPSVh,Wǋ]u}UWVSE+ɋ};}juĪ@   ^ڊĪ@^   VĪ@V?   Ī@;|W;u@=@=@=;t  [^_ÐS    [  x   у: tQ[   S    [î  |   у: tQ[    b:df:h:     b:df:h:     Usage: %s [-d] -f file -h t3
       remfile: %s
    T3 host: %s
    basedir: %s
    r       Unable to open T3 commands file     Add remote file: %s     gethostbyname: %s
      gethostbyname       gethostbyname: %s:%s
       Authorization           guest       %s/%s       Local file: %s
Remote file: %s
     w       GET /%s HTTP/1.0
User-Agent: Explorer
Host: %s:%d
Accept: */*
%s
      Mesg: %s    Unable to create socket     Connection to %s failed or timed out
       Error writing to socket
        response = %s       %s 

       rc=%d       Basic       Authorization       %s      %s:%s       %s: Basic %s
              Ҍ"2BRbrҍ"t                  d   oo         x
                        @                  t                                        ,hdh            .       THIS is DIGEST Authenitcation       ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/@(#)crti.s 1.4 94/08/22 SMI @(#)libc-i386:libc-i386/csu/crt1.s	1.18 @(#)crt1.s 1.3 93/12/01 SMI as: 3.0.1-alpha 03 Oct 1994 @(#)values-Xt.c	1.6	89/10/24 SMI @(#)synonyms.h	1.1 @(#)math.h	2.3	93/09/07 @(#)floatingpoint.h	2.3 93/09/07 SunPro @(#)stdio.h	1.34	94/06/07 SMI @(#)feature_tests.h	1.6	93/07/09 SMI @(#)ieeefp.h	2.3 93/09/07 SunPro acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE ../src/values-Xt.c
 as: PC3.0.1 21 Jan 1995 @(#)alloca.h	1.9	95/03/02 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.7	96/05/23 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.6	96/04/29 SMI @(#)faultcode.h	1.15	92/07/14 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)string.h	1.19	96/03/12 SMI @(#)strings.h	1.3	96/03/12 SMI @(#)netdb.h	1.18	96/09/24 SMI @(#)in.h	1.13	96/11/01 SMI @(#)stream.h	1.73	97/05/29 SMI @(#)vnode.h	1.69	97/05/09 SMI @(#)t_lock.h	1.43	97/04/04 SMI @(#)machlock.h	1.16	97/04/04 SMI @(#)sleepq.h	1.19	97/04/04 SMI @(#)turnstile.h	1.30	97/04/23 SMI @(#)param.h	1.48	97/06/26 SMI @(#)pirec.h	1.12	97/03/14 SMI @(#)mutex.h	1.17	97/04/04 SMI @(#)rwlock.h	1.5	97/04/04 SMI @(#)semaphore.h	1.4	94/07/29 SMI @(#)condvar.h	1.8	97/03/14 SMI @(#)cred.h	1.20	96/12/06 SMI @(#)uio.h	1.28	97/06/27 SMI @(#)resource.h	1.21	96/06/03 SMI @(#)seg_enum.h	1.3	95/12/22 SMI @(#)poll.h	1.24	97/04/18 SMI @(#)strmdep.h	1.8	92/07/14 SMI @(#)model.h	1.1	96/09/24 SMI @(#)byteorder.h	1.11	96/09/08 SMI @(#)socket.h	1.30	97/01/20 SMI @(#)netconfig.h	1.13	95/02/24 SMI acomp: PC3.0.1 21 Jan 1995 Sun C 3.0.1 hc2.6c -O0 -386 -fstrict -on SHAREABLE client.c
 as: PC3.0.1 21 Jan 1995 @(#)crtn.s 1.4 94/08/22 SMI ld: Software Generation Utilities - Solaris/ELF (3.0)  .interp .hash .dynsym .dynstr .SUNW_version .rel.ex_shared .rel.bss .rel.plt .plt .text .init .fini .rodata .got .dynamic .exception_ranges .ex_shared .data .bss .symtab .strtab .comment .stab.index .shstrtab .stab.indexstr                                                     Ԁ                     	                                                              xx                      o     `                -   	      tt                 <   	                       E   	              	         N         ll                  S         ,,  8                 Y         dd  '                  _           *                  e                            m         @@                   r                           {         hh                             ll                                x                                                                                              #                    07070100106fcc000081a00000007000000064000000013a3fefc80000282800000020000001f800000000000000000000001900000004reloc/bin/t3client.sparc  ELF                  4  $h     4    (        4  4                                                                                              , ,                  /usr/lib/ld.so.1       5   P   N       M   @   >   '   *       G           (   2      K   7   F           J       /   L           E       4       %   )               <   C           5      $   O   .       +   I   ?       D   0   :   H                                                                                                                                                                                  "           !   -                   ,           3          #       6                   9       A   ;       &   =       B   8       1                                                                               $                                                  	           
     @           x           |                                            ,                                 l                                                                                                         t                           	                         !         *          /               <          R D          `           g           l \          s h          {    8  
               (                    8           ,                                                                        !                 $         $         P          $                           "        )           / 8     	  <         C         ]          c           t          {          |          L  	             ,                            @   8                               socket getopt _start bzero recv _environ _end _ex_register _GLOBAL_OFFSET_TABLE_ gethostbyname atexit exit malloc sprintf _init fclose ___Argv strncat strncpy _DYNAMIC printf strncasecmp write _exit _ex_deregister environ perror __cg89_used __cg92_used inet_ntoa __fnonstd_used free close optarg fgets readresponse _edata _PROCEDURE_LINKAGE_TABLE_ fopen __fsr_init_value strcpy _etext _lib_version main .div strlen __environ_lock __builtin_alloca _fini debug fprintf connect libsocket.so.1 SISCD_2.3 libnsl.so.1 SISCD_2.3 libc.so.1 SUNW_0.9 libsocket.so.1 libnsl.so.1 libc.so.1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         zt                     zt                     
=(             4       #       =       &       '       3              0       B        >     ,  I     8  .     D  %     P  9     \  (     h  )     t                O       2       K       D       -       ;       N       +       <       6               1       H      @D  "a(, @'  $+   `      -` `?-)  ! -    /%    +   ` `?`5    +  a$ %@ #    @ C     F@ C	 @@ S       @     @ C   @ C   ? c!  !l  !  F!`    @ B&   ?   %  f7  F  b  d"    f  h"       	!  &    !! @ BԒ ?• f F` E!  F    !  F!  F @ Bǒ !  F @ BÒ !  F @ B !  F @ B  2      1   !  F@ B ,    d@ B     ? c @ `  @ B" @ B  `   !  F!@ B d@ B     @ B    #d      d @ B  !  F !< @ Bx    Հ`   !  F!T!  F!\!  F@ G!`#`@ Bs  @ Bp  @ By ? c @ `  !  F!p  @ Bq     !  F  F x @ BP !@ BP #\@ B_( !  F!   P @ BZ`         F @ B: @ BA   @ BO  ?  ? cp @ 0`  Pd0`      `? cx @ ` @ B= ? cp @ `  @ B9 ?" c @ B   @ B3   
$     $ !  F@ B"0$  \@ B( h !  F@ B'"L? cp @ `  @  $  $ + $ ( ? cp @ `  @ B$ 
? \@ B h  @ A  
? \@ B h  @ A @ B ? cp @ `  @  [$  $ ܬ     !  F  F P@ AÒ "`\ @ A @ A @ A `@D  `    ` !  Fd"@ A`  
`     ` !  F@ A!`  ` @ Aΐ `    @ Aɐ     @ AĐ      @ A   !  F @ A @ A~  @ Az  !  F!@ A} !  F@ A!,@ Ao    㿘 '   @ A     O.` O? ` .`      2 .`   !  " 	?!  F@ AO"h?.`    㿠!  F"p @ A     !  F"x @     !p  !      !  F"@ A0 @ A%?                  㿘@ A.  @ A+   @ Ac *  	
? #`!  F " @ A* 
?#`   @   @ A @ A !  F " @ A     	  &  	  !,H` ;  K 
 ( H` H` + : K  (H`H` + : K  (H` ` ?K  ( &H`   =((      =( =(( 㿠@      ?             㿠@      ?                    b:df:h: b:df:h: Usage: %s [-d] -f file -h t3
   remfile: %s
    T3 host: %s
    basedir: %s
    r   Unable to open T3 commands file Add remote file: %s gethostbyname: %s
  gethostbyname   gethostbyname: %s:%s
   guest       Authorization   %s/%s   Local file: %s
Remote file: %s
 w   GET /%s HTTP/1.0
User-Agent: Explorer
Host: %s:%d
Accept: */*
%s
  Mesg: %s    Unable to create socket Connection to %s failed or timed out
   Error writing to socket
        response = %s   %s 

   rc=%d   Basic   Authorization   %s  %s:%s   %s: Basic %s
   ,                                                  00     <0     H0     T0     `0     l0     x0     0     0     0     0     0     0     0     0     0     0     0    0    0     0    ,0    80    D0    P0    \0    h0    t0                -     9        @o $o               
                   o            P                   t   	                                                                           ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/.   THIS is DIGEST Authenitcation  cg: WorkShop Compilers 4.2 22 Oct 1996 @(#)alloca.h	1.9	95/03/02 SMI @(#)stdio.h	1.49	97/05/09 SMI @(#)feature_tests.h	1.13	97/06/26 SMI @(#)va_list.h	1.6	96/01/26 SMI @(#)stdlib.h	1.40	97/06/30 SMI @(#)unistd.h	1.45	97/06/06 SMI @(#)types.h	1.51	97/05/06 SMI @(#)isa_defs.h	1.11	97/03/21 SMI @(#)machtypes.h	1.11	96/04/29 SMI @(#)int_types.h	1.4	96/09/25 SMI @(#)select.h	1.11	96/06/20 SMI @(#)time.h	2.52	96/11/15 SMI @(#)time.h	1.25	96/03/12 SMI @(#)siginfo.h	1.39	96/06/28 SMI @(#)machsig.h	1.12	96/04/29 SMI @(#)unistd.h	1.29	96/06/05 SMI @(#)errno.h	1.14	95/10/30 SMI @(#)errno.h	1.16	95/07/04 SMI @(#)string.h	1.19	96/03/12 SMI @(#)strings.h	1.3	96/03/12 SMI @(#)netdb.h	1.18	96/09/24 SMI @(#)in.h	1.13	96/11/01 SMI @(#)stream.h	1.73	97/05/29 SMI @(#)vnode.h	1.70	98/08/13 SMI @(#)t_lock.h	1.43	97/04/04 SMI @(#)machlock.h	1.15	97/04/04 SMI @(#)sleepq.h	1.19	97/04/04 SMI @(#)turnstile.h	1.30	97/04/23 SMI @(#)param.h	1.48	97/06/26 SMI @(#)pirec.h	1.12	97/03/14 SMI @(#)mutex.h	1.17	97/04/04 SMI @(#)rwlock.h	1.5	97/04/04 SMI @(#)semaphore.h	1.4	94/07/29 SMI @(#)condvar.h	1.8	97/03/14 SMI @(#)cred.h	1.20	96/12/06 SMI @(#)uio.h	1.28	97/06/27 SMI @(#)resource.h	1.21	96/06/03 SMI @(#)seg_enum.h	1.3	95/12/22 SMI @(#)poll.h	1.24	97/04/18 SMI @(#)strmdep.h	1.8	92/07/14 SMI @(#)model.h	1.1	96/09/24 SMI @(#)byteorder.h	1.11	96/09/08 SMI @(#)socket.h	1.30	97/01/20 SMI @(#)netconfig.h	1.13	95/02/24 SMI acomp: WorkShop Compilers 4.2 30 Oct 1996 C 4.2 ld: Software Generation Utilities - Solaris/ELF (3.0)  .interp .hash .dynsym .dynstr .SUNW_version .rela.ex_shared .rela.bss .rela.plt .text .init .fini .exception_ranges .rodata .rodata1 .got .plt .dynamic .ex_shared .data .data1 .bss .symtab .strtab .stab.index .comment .shstrtab .stab.indexstr                                                                            	                                                                                     o    $  $   `                -                           =                           G           P               Q           
                  W            8                  ]       @  @   8                  c       x  x                     u       |  |                     }           #                                                                                  ,  ,                                                              h                         l  l   "                                                                                              #t                  070701001bdae2000041e80000007000000064000000033b01aeef0000000000000020000001f800000000000000000000000a00000004reloc/etc 070701001bdae3000081a00000007000000064000000013aca23ae0000052a00000020000001f800000000000000000000001200000004reloc/etc/cmd.txt #!/bin/ksh -p

# Variables
timeout="TIME"
file="FILE"
type="TYPE"
host="HOST"
port="PORT"
login="LOGIN"
logout="LOGOUT"
pass="PASS"
cmd="CMD"
case "${type}" in
    t3)
	ps1='<1>$'
	ps2='<2>$'
        ;;
    sc)
	ps1=':SC> $'
	ps2=':SC> $'
        ;;
esac

# Establish connection
echo open ${host} ${port}
sleep 1

# If T3, wait for Login prompt
if [ "${type}" = "t3" ]
then
    tout=${timeout}
    while [ "${tout}" -gt 0 ]
    do
	if tail -1 "${file}" 2>/dev/null | egrep -s -e "Login:"
	then
	    echo "${login}"
	    sleep 1
	    tout=-1
	    continue
	else
	    sleep 1
	    ((tout = tout - 1))
	fi
    done
fi

# Look for password or command prompt
tout=${timeout}
while [ "${tout}" -gt 0 ]
do
    if tail -1 "${file}" 2>/dev/null | egrep -s -e "Password:"
    then
	echo "${pass}"
	sleep 1
	tout=-1
	continue
    elif tail -1 "${file}" 2>/dev/null | egrep -s -e "${ps1}"
    then
        tout=-1
	continue
    else
	sleep 1
	((tout = tout - 1))
    fi
done

# Print the command, extra sleep to make sure command captured
sleep 1
echo "${cmd}"
sleep 1

# Wait for command completion
tout=${timeout}
while [ "${tout}" -gt 0 ]
do
    if tail -1 "${file}" 2>/dev/null | egrep -s -e "${ps2}"
    then
        echo "${logout}"
	tout=-1
	continue
    else
        sleep 1
	((tout = tout - 1))
    fi
done
echo "" >>${file}
  070701001dabc2000041e80000007000000064000000023b01aeef0000000000000020000001f800000000000000000000001200000004reloc/etc/default 070701001dabc5000081a00000007000000064000000013aa5678800000a2a00000020000001f800000000000000000000001b00000004reloc/etc/default/explorer    #
#  Build script for etc/default/explorer
#  $Id: //depot/dev/proactive/explorer3/build/explorer#5 $
#

COMMENT_EXP_DEFAULTS="Location of the explorer defaults file"
COMMENT_EXP_DEF_VERSION="Version of defaults file"
COMMENT_EXP_SUBJECT="Subject line for explorer email"
COMMENT_EXP_PATH="Default PATH for explorer"
COMMENT_EXP_CUSTOMER_NAME="Customer Name"
COMMENT_EXP_CONTRACT_ID="Contract ID"
COMMENT_EXP_EMAIL="Where explorer output should be mailed"
COMMENT_EXP_EMAIL_SPLIT="Maximum size (in bytes) of an explorer email"
COMMENT_EXP_USER_NAME="Customer Contact Name"
COMMENT_EXP_USER_EMAIL="Customer Contact Email"
COMMENT_EXP_PHONE="Customer Contact Phone Number"
COMMENT_EXP_ADDRESS_1="Customer Contact Address"
COMMENT_EXP_ADDRESS_2="Customer Contact Address (line 2)"
COMMENT_EXP_ADDRESS_CITY="Customer Contact City"
COMMENT_EXP_ADDRESS_STATE="Customer Contact State"
COMMENT_EXP_ADDRESS_ZIP="Customer Contact Zip"
COMMENT_EXP_ADDRESS_COUNTRY="Customer Contact Country"
COMMENT_EXP_HOME="Top directory of explorer installation"
COMMENT_EXP_LIB="Explorer library directory"
COMMENT_EXP_GEO="Customer Geography one of:\n    APAC (Asia Pacific),\n    EMEA (Europe, Middle East, Africa),\n    AMERICAS (North, Central and South America)"
COMMENT_EXP_REPLY="Email address where replies should be sent"
COMMENT_EXP_WHICH="Default list of modules to run"
COMMENT_EXP_CRON_WHICH="List of crontab files to collect"

record () {
    VAR=$"$1"
    VAL=`eval echo ${VAR}`
    COM=`eval echo $"COMMENT_$1" | sed -e 's/^/# /'`

    # Serial number?
    if echo $1 | egrep -s -e "EXP_SERIAL_"
    then
        HID=`echo $1 | sed -e 's/EXP_SERIAL_//'`
	COM="# Serial number for hostid $HID"
    fi

    # Print comment
    printf "%s\n" "${COM}"
    # Print assignment
    printf "%s=\"%s\"\n\n" "$1" "${VAL}"

    # printf "%32s=\"%s\"\n" "$1" "${VAL}"
}

# etc/default/explorer builder
if [ "$1" = install ]; then
    # File header
    echo "#!/bin/ksh -p"
    echo "# Explorer defaults file"
    echo "# This file is Korn shell source and is read by the explorer program"
    echo "# Modified on `date` by pkgadd"
    echo ""

    # Variables
    for VAR in `env | grep EXP_ | awk -F= '{print $1}'`
    do
	# Skip crontab data
	expr "${VAR}" : "EXP_CRONTAB_" >/dev/null && continue
	# Skip run data
	expr "${VAR}" : "EXP_RUN" >/dev/null && continue

	# Record
	record `eval echo ${VAR}`
    done
fi

# etc/default/explorer deconstructor
if [ "$1" = remove ]; then
    if [ -f "${PKG_INSTALL_ROOT}/${BASEDIR}/etc/default/explorer" ]; then
	cat ${PKG_INSTALL_ROOT}/${BASEDIR}/etc/default/explorer
    fi
fi
  070701001bdaf3000081a00000007000000064000000013afb2dbd0000021300000020000001f800000000000000000000001600000004reloc/etc/scinput.txt #
#  Build script for etc/scinput.txt
#  $Id: //depot/dev/proactive/explorer3/build/scinput.txt#1 $
#

# etc/scinput.txt builder
if [ "$1" = install ]; then
    if [ ! -f "${PKG_INSTALL_ROOT}/${BASEDIR}/etc/scinput.txt" ]
    then
	# File header
	echo "# Input file for extended data collection"
	echo "# Format is HOST PASSWORD"
    fi
fi

# etc/scinput.txt deconstructor
if [ "$1" = remove ]; then
    if [ -f "${PKG_INSTALL_ROOT}/${BASEDIR}/etc/scinput.txt" ]; then
	cat ${PKG_INSTALL_ROOT}/${BASEDIR}/etc/scinput.txt
    fi
fi
 070701001bdaf5000081a000000070000000640000000139c0f4050000007b00000020000001f800000000000000000000001600000004reloc/etc/t3files.txt elemprop.htm?unitIndex=0
elemprop.htm?unitIndex=1
enclmap.htm
logprop.htm
loopinf.htm
ofdgoper.htm
sysprop.htm
voloper.htm
 070701001bdaf6000081a00000007000000064000000013afb2dbd0000021300000020000001f800000000000000000000001600000004reloc/etc/t3input.txt #
#  Build script for etc/t3input.txt
#  $Id: //depot/dev/proactive/explorer3/build/t3input.txt#1 $
#

# etc/t3input.txt builder
if [ "$1" = install ]; then
    if [ ! -f "${PKG_INSTALL_ROOT}/${BASEDIR}/etc/t3input.txt" ]
    then
	# File header
	echo "# Input file for extended data collection"
	echo "# Format is HOST PASSWORD"
    fi
fi

# etc/t3input.txt deconstructor
if [ "$1" = remove ]; then
    if [ -f "${PKG_INSTALL_ROOT}/${BASEDIR}/etc/t3input.txt" ]; then
	cat ${PKG_INSTALL_ROOT}/${BASEDIR}/etc/t3input.txt
    fi
fi
 070701001e87c4000041e80000007000000064000000033b01aeef0000000000000020000001f800000000000000000000000a00000004reloc/lib 070701001e87c5000081a00000007000000064000000013acca1670000082200000020000001f800000000000000000000001400000004reloc/lib/exp_check   #!/bin/ksh -p
#
#  Validate the explorer defaults file
#
#  $Id$
#
EXP_CHECK_VERSION='$Revision$'
export EXP_CHECK_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_CHECK_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

# Must have EXP_DEFAULTS
require 'test -n "${EXP_DEFAULTS}"'
WARNINGS=0

# VARS variable index
VARS="EXP_DEFAULTS \
EXP_SERIAL_${HOSTID} \
EXP_CUSTOMER_NAME \
EXP_CONTRACT_ID \
EXP_EMAIL \
EXP_EMAIL_SPLIT \
EXP_USER_NAME \
EXP_USER_EMAIL \
EXP_PHONE \
EXP_ADDRESS_1 \
EXP_ADDRESS_2 \
EXP_ADDRESS_CITY \
EXP_ADDRESS_STATE \
EXP_ADDRESS_ZIP \
EXP_ADDRESS_COUNTRY \
EXP_HOME \
EXP_GEO \
EXP_REPLY \
EXP_WHICH \
EXP_CRON_WHICH"

exp_error () {
    MSG=$*

    echo "WARNING: ${MSG}"

    ((WARNINGS=WARNINGS + 1))
}

if [ -z "${EXP_DEFAULTS}" ]
then
    exp_error "DEFAULTS not set!"
    exit 1
fi

# Make sure we have a file to validate
if [ ! -f "${EXP_DEFAULTS}" ]
then
    exp_error "no defaults file!"
    exit 1
fi

# Walk through the variables we are interested in
for VAR in ${VARS}
do
    # Is variable present?
    cat ${EXP_DEFAULTS} | sed -e 's/#.*//g' | egrep -s -e "^${VAR}="
    if [ "$?" != 0 ]
    then
	# EXP_ADDRESS_2 need not be present
	if [ "${VAR}" = "EXP_ADDRESS_2" ]
	then
	    continue
	else
	    exp_error "${VAR} not found!"
	    continue
	fi
    fi

    # Is variable set?
    VAL=`cat ${EXP_DEFAULTS} | sed -e 's/#.*//g' | egrep -e "^${VAR}=" | awk -F= '{ print $2 }' | sed -e 's/"//g'`
    if [ -z "${VAL}" ]
    then
	# EXP_ADDRESS_2 need not be set
	if [ "${VAR}" = "EXP_ADDRESS_2" ]
	then
	    continue
	else
	    exp_error "${VAR} not set!"
	    continue
	fi
    fi

    # Make sure SPLIT size is between 1 and 9 MB
    if [ "${VAR}" = "EXP_EMAIL_SPLIT" ]
    then
	if [ "${VAL}" -lt 1048576 -o "${VAL}" -gt 9437184 ]
	then
	    exp_error "${VAR} is outside the accepted range 1048576 - 9437184"
	    continue
	fi
    fi
done

if [ "${WARNINGS}" -gt 0 ]
then
    echo ""
    echo "${WARNINGS} warnings found in ${EXP_DEFAULTS}"
    echo ""

    exit 1
fi
exit 0
  070701001e87c6000081a00000007000000064000000013aa53722000007f200000020000001f800000000000000000000001500000004reloc/lib/exp_common  #!/bin/ksh -p
#  exp_common: common functions
#  $Id: //depot/dev/proactive/explorer3/lib/exp_common#10 $
EXP_COMMON_VERSION='$Revision: #10 $'
export EXP_COMMON_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_COMMON_VERSION}"
    exit
fi

#
# send output to the logfile, and stdout
# logfile foo is $foo
# logfile foo is $foo >/dev/null
# logfile <<EOF
#   this message
#   has two lines
# EOF
# date | logfile
#
logfile () {
    (
    MOD=`basename $0`

    # Check for writeability of EXP_LOGFILE
    if [ ! -w "${EXP_LOGFILE}" ]
    then
	# Check if we can create it
	touch ${EXP_LOGFILE} >/dev/null 2>&1
	if [ "$?" -ne 0 ]
	then
	    # Set to /dev/null if we can't write to logfile
	    EXP_LOGFILE=/dev/null
	fi
    fi

    if [ "$1" = "NOTNOISE" ]
    then
	shift
	if [ -n "${EXP_QUIET}" ]
	then
	    exec > /dev/null
	fi
    elif [ "$1" = "ERROR" -o "$1" = "FATAL" -o "$1" = "DEBUG" ]
    then
	# Do nothing on ERROR/FATAL messages, go to STDERR and logfile
	# Do not strip ERROR/FATAL from message
	LEVEL="$1 "
	shift
    else
	if [ -z "${EXP_VERBOSE}" ]
	then
	    exec > /dev/null
	fi
    fi
    {
	if [ "$#" -gt 0 ]
	then
	    echo "$*"
	else
	    cat
	fi
    } | sed -e "s/^/`date -u '+%b %d %H:%M:%S'` `uname -n`[${EXP_PID}] $MOD: ${LEVEL}/" | tee -a ${EXP_LOGFILE} 2>/dev/null
    )
}

prompt () {
    {
    if [ "$#" -gt 0 ]
    then
	echo "$*"
    else
        cat
    fi
    }
}

#
# run first arg; require a zero exit status
# 2nd arg is optional error message
# require "test `uname -s` = SunOS"
# require "uname -r | grep '^5'" "Must be run on SunOS 5.x"
#
require () {
    eval "$1" >/dev/null
    if [ "$?" -ne 0 ]
    then
	script=`basename $0`
	
	# FATAL if script is explorer
	if [ "$script" = "explorer" ]
	then
	    logfile FATAL "exited: ${2:-$1}"

	    # Log to /var/adm/messages if this is explorer
	    TEXT=`gettext "Explorer exited"`
	    logger -p daemon.notice -t explorer "${TEXT}"
	else
	    logfile NOTNOISE "exited: ${2:-$1}"
	fi

	exit 1
    fi
}
  070701001e87c7000081a00000007000000064000000013aa56788000002bf00000020000001f800000000000000000000001300000004reloc/lib/exp_file    #!/bin/ksh -p
#  exp_file: file transport mechanism
#  $Id: //depot/dev/proactive/explorer3/lib/exp_file#9 $
EXP_FILE_VERSION='$Revision: #9 $'
export EXP_FILE_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_FILE_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

# Must have EXP_DEVICE and EXP_FILE
require 'test -n "${EXP_DEVICE}"'
require 'test -f "${EXP_FILE}"'
EXP_FNAME=`basename ${EXP_FILE}`

# Write to device
tar cf ${EXP_DEVICE} ${EXP_FILE}
# logfile NOTNOISE "${EXP_FILE} sent via tar to ${EXP_DEVICE}"
TEXT=`gettext "%s sent via tar to %s"`
TEXT=`printf "${TEXT}" "${EXP_FILE}" "${EXP_DEVICE}"`
logfile NOTNOISE "${TEXT}"
 070701001e87c8000081a00000007000000064000000013ab7e0460000067e00000020000001f800000000000000000000001200000004reloc/lib/exp_ftp #!/bin/ksh -p
#  exp_ftp: ftp transport mechanism
#  $Id: //depot/dev/proactive/explorer3/lib/exp_ftp#10 $
EXP_FTP_VERSION='$Revision: #10 $'
export EXP_FTP_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_FTP_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

# Must have EXP_FILE, EXP_FTP and EXP_FTPDEST
require 'test -f "${EXP_FILE}"'
require 'test -n "${EXP_FTP}"'
require 'test -n "${EXP_FTPDEST}"'
require "cd ${EXP_TMPDIR}"

ARCH=`uname -p`
EXP_FNAME=`basename ${EXP_TARGET}`

# Require host to be in /.netrc
require 'egrep -s -e "${EXP_FTP}" /.netrc' "Unable to find ${EXP_FTP} in /.netrc, please update"

# Found in /.netrc, make attempt to ftp
EXP_TMPFILE="${EXP_TMPDIR}/ftp.$$"
ftp ${EXP_FTP} >${EXP_TMPFILE} <<EOF
bin
cd ${EXP_FTPDEST}
put ${EXP_FILE}
quit
EOF

# Process any error messages from the ftp
if egrep -s -e "No such file or directory." ${EXP_TMPFILE}
then
    # logfile ERROR "Missing ${EXP_FTPDEST} on ${EXP_FTP}"
    TEXT=`gettext "Missing %s on %s"`
    TEXT=`printf "${TEXT}" "${EXP_FTPDEST}" "${EXP_FTP}"`
    logfile ERROR "${TEXT}"
elif egrep -s -e "Permission denied." ${EXP_TMPFILE}
then
    # logfile ERROR "Unable to write to ${EXP_FTPDEST} on ${EXP_FTP}"
    TEXT=`gettext "Unable to write to %s on %s"`
    TEXT=`printf "${TEXT}" "${EXP_FTPDEST}" "${EXP_FTP}"`
    logfile ERROR "${TEXT}"
else
    # logfile NOTNOISE "${EXP_FILE} sent via ftp to ${EXP_FTP}${EXP_FTPDEST}"
    TEXT=`gettext "%s sent via ftp to %s%s"`
    TEXT=`printf "${TEXT}" "${EXP_FILE}" "${EXP_FTP}" "${EXP_FTPDEST}"`
    logfile NOTNOISE "${TEXT}"
fi

# Clean up
rm -f ${EXP_TMPFILE}
  070701001e87c9000081a00000007000000064000000013ac288b4000015d700000020000001f800000000000000000000001300000004reloc/lib/exp_mail    #!/bin/ksh -p
#  exp_mail: mail transport mechanism
#  $Id: //depot/dev/proactive/explorer3/lib/exp_mail#21 $
EXP_MAIL_VERSION='$Revision: #21 $'
export EXP_MAIL_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_MAIL_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

# Message IDs
msgidn=0
gen_messageid () {
    ((msgidn=msgidn + 1))
    msgid="<explorer.`date -u +\%Y\%m\%d\%H\%M\%S`.$$.$msgidn.${HOSTID}@`uname -n`>"
}

# Must have EXP_FILE, EXP_TARGET, EXP_TMPDIR and EXP_MAILTO
require 'test -f "${EXP_FILE}"'
require 'test -n "${EXP_TARGET}"'
require 'test -n "${EXP_TMPDIR}"'
require 'test -n "${EXP_MAILTO}"'
require "cd ${EXP_TMPDIR}"

ARCH=`uname -p`
EXP_FNAME=`basename ${EXP_TARGET}`
FILE="${EXP_TMPDIR}/${EXP_FILE}"

# Expand EXP_SUBJECT if necessary
if [ -z "${EXP_SUBJECT}" ]
then
    EXP_SUBJECT=${EXP_FNAME}
else
    # Translate %F to EXP_FNAME
    EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%F/${EXP_FNAME}/g"`

    # Translate %C to EXP_CUSTOMER_NAME
    EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%C/${EXP_CUSTOMER_NAME}/g"`

    # Translate %I to EXP_CONTRACT_ID
    EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%I/${EXP_CONTRACT_ID}/g"`

    # Translate %E to EXP_ID
    EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%E/${EXP_ID}/g"`

    # Translate %H to hostid
    EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%H/${HOSTID}/g"`
fi

# Attempt to use mpack if available
MPACK=`which mpack`

# No mpack, use our own method
if echo "${MPACK}" | egrep -s -e "^no "
then
    # logfile "mpack not available, manual build of MIME messages"
    TEXT=`gettext "mpack not available, manual build of MIME messages"`
    logfile "${TEXT}"
    # SPLIT was based on mpack which uses size -
    #     rough conversion from bytes to lines
    EXP_EMAIL_SPLIT=`echo "${EXP_EMAIL_SPLIT} * .0162" | bc | awk -F. '{ print $1 }'`

    # Get output in base64
    cat ${FILE} | \
    uuencode "${EXP_FILE}" | \
    nawk -f ${EXP_LIB}/uu2b64 | \
    split -l ${EXP_EMAIL_SPLIT} - ${EXP_FNAME}.body.

    # Mail header
    gen_messageid
    cat <<-EOF >${EXP_FNAME}.head
	Subject: ${EXP_SUBJECT}
	Message-ID: $msgid
	MIME-Version: 1.0
	Content-type: application/octet-stream; name="${EXP_FILE}"
	Content-description: explorer output file: ${EXP_FNAME} (tar/compressed)
	Content-transfer-encoding: base64
EOF
    
    # Construct headers for each message
    total=`ls -1 ${EXP_FNAME}.body.* | wc -l | sed -e 's/^ *//'`
    if [ "${total}" -gt 1 ]
    then
        # More than one message, keep original header in first message
	mv ${EXP_FNAME}.body.aa ${EXP_FNAME}.first
	mv ${EXP_FNAME}.head ${EXP_FNAME}.body.aa
	echo >> ${EXP_FNAME}.body.aa
	cat ${EXP_FNAME}.first >> ${EXP_FNAME}.body.aa
	rm -f ${EXP_FNAME}.first

	msgnum=1
	gen_messageid
	mimeSplitId=$msgid
	lastmsgid=$topmsgid

	# Fix each message
	for j in ${EXP_FNAME}.body.*
	do
	    # Clean up old mail header
	    rm -f ${EXP_FNAME}.head

	    # New mail header
	    gen_messageid
	    cat <<-EOF >${EXP_FNAME}.head
	Subject: ${EXP_SUBJECT} ($msgnum of $total)
	Message-ID: $msgid
	MIME-Version: 1.0
	Content-type: Message/partial; id="$mimeSplitId"; number=${msgnum}; total=$total
EOF
	    ((msgnum=msgnum + 1))

	    # Reconstruct message
	    cat ${EXP_FNAME}.head > ${EXP_FNAME}.body
	    test -n "$lastmsgid" && echo "References: $lastmsgid" >> ${EXP_FNAME}.body
	    echo "" >> ${EXP_FNAME}.body
	    cat $j >> ${EXP_FNAME}.body
	    mv ${EXP_FNAME}.body $j

	    lastmsgid=$msgid
	done

	# Clean up
	rm -f ${EXP_FNAME}.head ${EXP_FNAME}.body
    else
	# Use multipart/mixed
	cat <<-EOF >${EXP_FNAME}.body
	Subject: ${EXP_SUBJECT}
	Message-ID: $msgid
	MIME-Version: 1.0
	Content-type: multipart/mixed; boundary="${EXP_FNAME}"

	This is a multi-part message in MIME format.
	--${EXP_FNAME}
	Content-type: text/plain; charset=us-ascii
	Content-transfer-encoding: 7bit

EOF
	# put README in body
	cat ${EXP_TARGET}/README >>${EXP_FNAME}.body

	# now the attachment header
	cat <<-EOF >>${EXP_FNAME}.body

	--${EXP_FNAME}
	Content-type: application/octet-stream; name="${EXP_FILE}"
	Content-description: explorer output file: ${EXP_FNAME} (tar/compressed)
	Content-transfer-encoding: base64

EOF
    
	# now the attachment
	cat ${EXP_FNAME}.body.* >> ${EXP_FNAME}.body
	cat <<-EOF >>${EXP_FNAME}.body
	--${EXP_FNAME}--
EOF

	# Clean up
	rm -f ${EXP_FNAME}.head ${EXP_FNAME}.body.*
    fi

# Got mpack, use it
else
    # logfile "using mpack to construct MIME messages"
    TEXT=`gettext "using mpack to construct MIME messages"`
    logfile "${TEXT}"

    # Use mpack to pack in MIME format
    ${MPACK} -m ${EXP_EMAIL_SPLIT} -s "${EXP_SUBJECT}" \
        -d "${EXP_TARGET}/README" -o ${EXP_FNAME}.body ${FILE}
fi

# Mail output
total=`ls -1 ${EXP_FNAME}.body* | wc -l | sed -e 's/^ *//'`

# logfile NOTNOISE "${EXP_FILE} split into $total parts"
TEXT=`gettext "%s split into %s parts"`
TEXT=`printf "${TEXT}" "${EXP_FILE}" "${total}"`
logfile NOTNOISE "${TEXT}"

# Rename if only one part
[ -f ${EXP_FNAME}.body ] && mv ${EXP_FNAME}.body ${EXP_FNAME}.body.01

# Send each part
for j in ${EXP_FNAME}.body*
do
    # Send message to sendmail
    {
	echo To: ${EXP_MAILTO}
	test -n "${EXP_REPLY}" && echo "From: ${EXP_REPLY}"
	test -n "${EXP_REPLY}" && echo "Reply-to: ${EXP_REPLY}"
	cat $j
    } | /usr/lib/sendmail -oi -t
done

# logfile NOTNOISE "${EXP_FILE} sent via mail to ${EXP_MAILTO}"
TEXT=`gettext "%s sent via mail to %s"`
TEXT=`printf "${TEXT}" "${EXP_FILE}" "${EXP_MAILTO}"`
logfile NOTNOISE "${TEXT}"

# Clean up
rm -rf ${EXP_FNAME}.body* ${DES}
 070701001e87ca000081a00000007000000064000000013b01aee500002d1c00000020000001f800000000000000000000001300000004reloc/lib/exp_main    #!/bin/ksh -p
#  exp_main: explorer main: variables and command line parsing
#  $Id: //depot/dev/proactive/explorer3/lib/exp_main#53 $
EXP_MAIN_VERSION='$Revision: #53 $'

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_MAIN_VERSION}"
    exit
fi

# Save HOSTID
HOSTID=`hostid`
export HOSTID EXP_MAIN_VERSION

#
# Set default values for certain variables
#
if [ "`dirname $0`" = "/usr/sbin" ]
then
    EXP_HOME="/"
    EXP_LIB="/usr/lib/explorer"
else
    EXP_HOME="`dirname $0`/.."
    EXP_LIB="${EXP_HOME}/lib"
fi
EXP_LOGFILE=/dev/null
BIN=`basename $0`
USAGE="\n\
${BIN} -version\n\
${BIN} -help\n\n\
${BIN}\n\
\t[ -h <explorer-home> ]\n
\t[ -d <defaults-file> ]\n
\t[ -l <log-file> ]\n
\t[ -e | -mail ]\n
\t[ -E <email-address> | -myemail <email-address> ]\n
\t[ -t <output-directory> | -target <output-directory> ]\n
\t[ -r ]\n
\t[ -R <email-address> ]\n
\t[ -k | -keep ]\n
\t[ -f <file> ]\n
\t[ -c <command> ]\n
\t[ -w <module-list> ]\n
\t[ -v | -verbose ]\n
\t[ -q | -quiet ]\n
\t[ -case <case-number> ]\n
\t[ -esc <escalation-number> ]\n
\t[ -sn <serial-number> ]\n
\t[ -transport <transport> ]\n
\t[ -s <subject> ]\n
"

#
# returns non-zero if all of the components of the ${EXP_WHICH} variable
# are negative (start with a ! character).
#
which_negative_check () {
    for i in `echo ${EXP_WHICH} | sed -e 's/,/ /g'`
    do
	expr "$i" : "^!" >/dev/null || return 0
    done

    # All negative options, assume default
    EXP_WHICH="default,${EXP_WHICH}"
}

#
# generate parse data (README / defaults)
#
gen_parse_data () {
    EXP_SERIAL=`eval echo $"EXP_SERIAL_${HOSTID}"`
    LC_SAVE=${LC_ALL}
    LC_ALL=C

    # Expand EXP_SUBJECT if necessary
    if [ -z "${EXP_SUBJECT}" ]
    then
        EXP_SUBJECT=${EXP_FNAME}
    else
	# Translate %F to EXP_FNAME
	EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%F/${EXP_FNAME}/g"`

	# Translate %C to EXP_CUSTOMER_NAME
	EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%C/${EXP_CUSTOMER_NAME}/g"`

	# Translate %I to EXP_CONTRACT_ID
	EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%I/${EXP_CONTRACT_ID}/g"`

	# Translate %E to EXP_ID
	EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%E/${EXP_ID}/g"`

	# Translate %H to hostid
	EXP_SUBJECT=`echo ${EXP_SUBJECT} | sed -e "s/%H/${HOSTID}/g"`
    fi

    echo "=========== SUN ENTERPRISE(TM) EXPLORER (Version ${EXP_VERSION}) ===========" >> ${EXP_TARGET}/README
    echo "" >> ${EXP_TARGET}/README
    echo "This directory contains system configuration information. " >> ${EXP_TARGET}/README
    echo "Information was gathered on `date`." >> ${EXP_TARGET}/README
    echo "" >> ${EXP_TARGET}/README
    echo "Synopsis" >> ${EXP_TARGET}/README
    echo "========" >> ${EXP_TARGET}/README
    echo "" >> ${EXP_TARGET}/README
    # Regenerate old /etc/default/explorer format
    echo "       Customer Name: ${EXP_CUSTOMER_NAME}" >> ${EXP_TARGET}/README
    echo "         Contract ID: ${EXP_CONTRACT_ID}" >> ${EXP_TARGET}/README
    echo "    Email results to: ${EXP_REPLY}" >> ${EXP_TARGET}/README
    [ -n "${EXP_RECEIPT}" ] && echo "Explorer receipts to: ${EXP_RECEIPT}" >> ${EXP_TARGET}/README
    [ -n "${EXP_SUBJECT}" ] && echo "             Subject: ${EXP_SUBJECT}" >> ${EXP_TARGET}/README
    echo "    Modules selected: ${EXP_WHICH}" >> ${EXP_TARGET}/README
    [ -n "${EXP_CASE}" ] && echo "         Case number: ${EXP_CASE}" >> ${EXP_TARGET}/README
    [ -n "${EXP_ESC}" ] && echo "    Escalation number: ${EXP_ESC}" >> ${EXP_TARGET}/README
    if [ -d "${EXP_TARGET}/sc" ]
    then
	echo "SC extended data for:\c" >> ${EXP_TARGET}/README
	for SC in ${EXP_TARGET}/sc/*
	do
	    HOST=`basename ${SC}`
	    echo " ${HOST}\c" >> ${EXP_TARGET}/README
	done
	echo "" >> ${EXP_TARGET}/README
    fi
    if [ -d "${EXP_TARGET}/disks/t3" ]
    then
	echo "T3 extended data for:\c" >> ${EXP_TARGET}/README
	for T3 in ${EXP_TARGET}/disks/t3/*
	do
	    if [ -d "${T3}" ]
	    then
		HOST=`basename ${T3}`
		echo " ${HOST}\c" >> ${EXP_TARGET}/README
	    fi
	done
	echo "" >> ${EXP_TARGET}/README
    fi
    echo "" >> ${EXP_TARGET}/README
    echo "           User Name: ${EXP_USER_NAME}" >> ${EXP_TARGET}/README
    echo "         User e-mail: ${EXP_USER_EMAIL}" >> ${EXP_TARGET}/README
    echo "        User Phone #: ${EXP_PHONE}" >> ${EXP_TARGET}/README
    echo "" >> ${EXP_TARGET}/README
    echo "System Serial number: ${EXP_SERIAL}" >> ${EXP_TARGET}/README
    echo "      Address line 1: ${EXP_ADDRESS_1}" >> ${EXP_TARGET}/README
    echo "      Address line 2: ${EXP_ADDRESS_2}" >> ${EXP_TARGET}/README
    echo "                City: ${EXP_ADDRESS_CITY}" >> ${EXP_TARGET}/README
    echo "               State: ${EXP_ADDRESS_STATE}" >> ${EXP_TARGET}/README
    echo "             Country: ${EXP_ADDRESS_COUNTRY}" >> ${EXP_TARGET}/README
    echo "            Zip Code: ${EXP_ADDRESS_ZIP}" >> ${EXP_TARGET}/README
    echo "" >> ${EXP_TARGET}/README
    echo "The following info was collected using UNIX tools (hostname, arch, etc)" >> ${EXP_TARGET}/README
    echo "----------------------------------------------------------------------" >> ${EXP_TARGET}/README
    echo "" >> ${EXP_TARGET}/README
    echo "Date: ${EXP_START}" >> ${EXP_TARGET}/README
    echo "Finished: ${EXP_STOP}" >> ${EXP_TARGET}/README
    showrev >> ${EXP_TARGET}/README
    # SUNW - is for Sun HW
    # CYRS - is for Cray HW

    SYSNAME=`prtconf | egrep '^SUNW,'`
    if [ -z "$SYSNAME" ]
    then
	SYSNAME=`prtconf | egrep '^CYRS,'`
    fi
    echo "System Type: $SYSNAME" >> ${EXP_TARGET}/README
    echo "Uptime: `uptime`" >> ${EXP_TARGET}/README

    echo "Swap-s:" >> ${EXP_TARGET}/README
    swap -s >> ${EXP_TARGET}/README

    echo "Swap-l:" >> ${EXP_TARGET}/README
    swap -l 2>&1 >> ${EXP_TARGET}/README

    echo "Vmstat:" >> ${EXP_TARGET}/README
    vmstat >> ${EXP_TARGET}/README

    # Get the input file
    cp ${EXP_HOME}/etc/default/explorer ${EXP_TARGET}/defaults

    # Create rev file
    echo "${EXP_VERSION}" > ${EXP_TARGET}/rev
    export LC_ALL=${LC_SAVE}
}

# Clean up function
clean () {
    # Remove tmp files
    rm -rf ${EXP_STDERR} ${EXP_TMPDIR}/*.${EXP_PID}

    # Restore .netrc
    [ -f "/.netrc.${EXP_PID}" ] && mv /.netrc.${EXP_PID} /.netrc

    if [ "$#" -eq 0 ]
    then
	# Remove output dir
	rm -rf ${EXP_TARGET}

	TEXT=`gettext "Explorer interrupted"`
	logger -p daemon.notice -t explorer "${TEXT}"
	logfile NOTNOISE "${TEXT}"
	exit
    fi
}

#
#  override certain defaults
#
override () {
    # Override certain defaults with appropriate versions
    EXP_VERSION="3.5.0, FCS"
    EXP_ID="explorer.${HOSTID}.`uname -n`-`date -u +\%Y.\%m.\%d.\%H.\%M`"
    EXP_STARTDIR=`pwd`
}

# Source common functions
. ${EXP_LIB}/exp_common

# read defaults
. ${EXP_HOME}/etc/default/explorer

# Override certain defaults
override

#
# Support for localization
#
TEXTDOMAIN=explorer
if [ "${EXP_HOME}" != "/" ]
then
    TEXTDOMAINDIR="${EXP_LIB}/locale"
fi

# Save original email destination
DEFAULT_EMAIL="${EXP_EMAIL}"
EXP_EMAIL=""

# Set the output target
test -z "${EXP_TARGET}" && {
    if [ "${EXP_HOME}" = "/" ]
    then
        EXP_TARGET="/var/explorer/output/${EXP_ID}"
    else
        EXP_TARGET="${EXP_HOME}/output/${EXP_ID}"
    fi
}   

# command line options override
while [ "$#" -ne 0 ]
do
    case "$1" in
	-d)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_DEFAULTS=$2

	    if [ -f "${EXP_DEFAULTS}" ]
	    then
		# Read defaults
		. ${EXP_DEFAULTS}

		# Override certain defaults
		override

		# Save original email destination
		DEFAULT_EMAIL=${EXP_EMAIL}
		EXP_EMAIL=""
	    fi
	    shift
	    ;;

	-f)
	    require "test $# -gt 1" "argument $1 requires option"

	    if [ -z "${EXP_EXTRA_FILES}" ]
	    then
		EXP_EXTRA_FILES="$2"
	    else
		EXP_EXTRA_FILES="${EXP_EXTRA_FILES},$2"
	    fi
	    shift
	    ;;

	-c)
	    require "test $# -gt 1" "argument $1 requires option"

	    # Escape space with %20
	    CMD=`echo $2 | sed -e 's/ /%20/g'`
	    if [ -z "${EXP_EXTRA_CMDS}" ]
	    then
		EXP_EXTRA_CMDS="$CMD"
	    else
		EXP_EXTRA_CMDS="${EXP_EXTRA_CMDS},$CMD"
	    fi
	    shift
	    ;;

	-R)
	    require "test $# -gt 1" "argument $1 requires option"
	    if [ -z "${EXP_RECEIPT}" ]
	    then
	        EXP_RECEIPT="$2"
	    else
	        EXP_RECEIPT="${EXP_RECEIPT},$2"
	    fi

	    shift
	    ;;
	
	-r) 
	    if [ -z "${EXP_RECEIPT}" ]
	    then
	        EXP_RECEIPT="${EXP_USER_EMAIL}"
	    else
		if [ -n "${EXP_USER_EMAIL}" ]
		then
		    EXP_RECEIPT="${EXP_RECEIPT},${EXP_USER_EMAIL}"
		fi
	    fi

	    ;;

	-E|-myemail)
	    require "test $# -gt 1" "argument $1 requires option"
	    if [ -z "${EXP_EMAIL}" ]
	    then
	        EXP_EMAIL="$2"
	    else
	        EXP_EMAIL="${EXP_EMAIL},$2"
	    fi

	    shift
	    ;;

	-e|-mail)
	    if [ -z "${EXP_EMAIL}" ]
	    then
	        EXP_EMAIL="${DEFAULT_EMAIL}"
	    else
	        EXP_EMAIL="${EXP_EMAIL},${DEFAULT_EMAIL}"
	    fi

	    ;;

	-sn)
	    require "test $# -gt 1" "argument $1 requires option"

	    eval "EXP_SERIAL_${HOSTID}=$2"
	    shift
	    ;;

	-h)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_HOME=$2
	    shift
	    ;;

	-k|-keep)
	    EXP_KEEP=notempty
	    ;;

	-l)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_LOGFILE=$2
	    expr "X${EXP_LOGFILE}" : "X/.*" >/dev/null || \
	    EXP_LOGFILE=${EXP_STARTDIR}/${EXP_LOGFILE}
	    shift
	    ;;

	-t|-target)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_TARGET=$2/${EXP_ID}
	    shift
	    ;;
	
	-transport)
	    require "test $# -gt 1" "argument $1 requires option"

	    if [ -z "${EXP_TRANSPORT}" ]
	    then
	        EXP_TRANSPORT=$2
	    else
	        EXP_TRANSPORT="${EXP_TRANSPORT},$2"
	    fi
	    shift
	    ;;

	-w)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_WHICH=$2
	    shift
	    ;;

	-q|-quiet)
	    EXP_QUIET=notempty
	    ;;

	-v|-verbose)
	    EXP_VERBOSE=notempty
	    ;;
	
	-case)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_CASE=$2
	    shift
	    ;;

	-esc)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_ESC=$2
	    shift
	    ;;

	-s)
	    require "test $# -gt 1" "argument $1 requires option"

	    EXP_SUBJECT=$2
	    shift
	    ;;

	-version)
	    echo "Explorer version: ${EXP_VERSION}" 1>&2
	    DO_VERSION=notempty
	    export DO_VERSION
	    for lib in ${EXP_LIB}/exp_*
	    do
		sh ${lib}
	    done
	    exit 1
	    ;;

	*)
	    echo $USAGE 1>&2
	    exit 1
	    ;;
    esac
    shift
done

# Update TRANSPORT with EXP_EMAIL addresses
for i in `echo ${EXP_EMAIL} | sed -e 's/,/ /g'`
do
    if [ -z "${EXP_TRANSPORT}" ]
    then
        EXP_TRANSPORT="mailto:$i"
    else
        EXP_TRANSPORT="${EXP_TRANSPORT},mailto:$i"
    fi
done

# Set EXP_TMPDIR based on TARGET
EXP_TMPDIR=`dirname ${EXP_TARGET}/`

which_negative_check

# Translate spaces to %20
EXP_EXTRA_CMDS=`echo ${EXP_EXTRA_CMDS} | sed -e 's/ /%20/g'`

# Make variables available
export EXP_STARTDIR EXP_HOME EXP_TARGET EXP_ID EXP_WHICH
export EXP_OPTIONS_DONE EXP_FILE_MAX_SIZE EXP_EXTRA_CMDS
export EXP_EXTRA_FILES EXP_EMAIL_SPLIT EXP_MAIN_VERSION
export EXP_VERSION EXP_STDERR EXP_EMAIL EXP_KEEP EXP_GEO
export EXP_FILE_HEAD_LINES EXP_FILE_TAIL_LINES EXP_FILE_PATTERNS
export EXP_QUIET EXP_VERBOSE EXP_LOGFILE EXP_TRANSPORT EXP_CASE
export EXP_CUSTOMER_NAME EXP_CONTRACT_ID EXP_SERIAL EXP_RECEIPT
export EXP_USER_NAME EXP_USER_EMAIL EXP_PHONE
export EXP_ADDRESS_1 EXP_ADDRESS_2 EXP_ADDRESS_CITY
export EXP_ADDRESS_STATE EXP_ADDRESS_ZIP EXP_ADDRESS_COUNTRY
export EXP_TMPDIR EXP_SUBJECT
070701001e87cb000081a00000007000000064000000013ab7e046000005c200000020000001f800000000000000000000001700000004reloc/lib/exp_postproc    #!/bin/ksh -p
#  exp_postproc: post processing of explorer output (IP address masking)
#  $Id: //depot/dev/proactive/explorer3/lib/exp_postproc#12 $
EXP_POSTPROC_VERSION='$Revision: #12 $'
export EXP_POSTPROC_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_POSTPROC_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

# Must have EXP_TARGET
require 'test -n "${EXP_TARGET}"'
require 'cd "${EXP_TARGET}"'

# Set default regular expression and blank
test -z "${EXP_IPV4_RE}" && {
    EXP_IPV4_RE="[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?"
    EXP_IPV4_BLANK="xxx.xxx.xxx.xxx"
}

# Mask IPv4 addresses if necessary
expr "${EXP_WHICH}" : ".*!ipaddr.*" >/dev/null && {
    # logfile NOTNOISE "masking IPv4 addresses"
    TEXT=`gettext "masking IPv4 addresses"`
    logfile NOTNOISE "${TEXT}"

    find . -type f -print | while read file
    do
	base=`basename $file`
	dir=`dirname $file`

	# Files & directories not to mask (version numbers not IP addresses)
	[ "$base" = "contents" ]        && continue
	[ "$base" = "prtconf-vp.out" ]  && continue
	[ "$dir"  = "./sysconfig/drv" ] && continue

	if [ -f "$file" ]
	then
	    cp $file $file.tmp
	    nawk "{ gsub(/${EXP_IPV4_RE}/, \"${EXP_IPV4_BLANK}\"); print }" $file.tmp >$file.tmp2 2>/dev/null

	    # Only overwrite if nawk succeeds
	    [ "$?" -eq 0 ] && mv $file.tmp2 $file
	    rm -f $file.tmp $file.tmp2
	fi
    done
}
  070701001e87cc000081a00000007000000064000000013b009b7a00002f6a00000020000001f800000000000000000000001400000004reloc/lib/exp_tools   #!/bin/ksh -p
#  exp_tools: explorer API for data gathering modules
#  $Id: //depot/dev/proactive/explorer3/lib/exp_tools#24 $
EXP_TOOLS_VERSION='$Revision: #24 $'
export EXP_TOOLS_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_TOOLS_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

#
# touch a file
#    First arg is the file to create
#
touch_file () {
    if [ "$#" -lt 1 ]
    then
        # logfile ERROR "Wrong number of args to touch_file: $*"
        TEXT=`gettext "Wrong number of args to touch_file: %s"`
        TEXT=`printf "${TEXT}" "$*"`
	logfile ERROR "${TEXT}"
	return 1
    fi

    FILE=${EXP_TARGET}/$1
    DIR=`dirname ${FILE}`

    # Make sure the directory exists
    [ ! -d "${DIR}" ] && { mkdir -p ${DIR}; }
    touch ${FILE} >/dev/null 2>&1
}

#
#  echo to a file
#    First arg is the file to echo to
#    Optional second arg is the message to print
#
echo_file () {
    (
    if [ "$#" -lt 1 ]
    then
        # logfile ERROR "Wrong number of args to echo_file: $*"
        TEXT=`gettext "Wrong number of args to echo_file: %s"`
        TEXT=`printf "${TEXT}" "$*"`
	logfile ERROR
	return 1
    fi

    FILE=${EXP_TARGET}/$1
    DIR=`dirname ${FILE}`
    shift

    # Check for writeability of file
    if [ ! -w "${FILE}" ]
    then
	# Make sure the directory exists
	[ ! -d "${DIR}" ] && { mkdir -p ${DIR}; }

	# Create the file
	touch ${FILE} >/dev/null 2>&1
    fi
    {
	if [ "$#" -gt 0 ]
	then
	    echo "$*"
	else
	    cat
	fi
    } >>${FILE} 2>&1
    )
}

#
# create a symlink in EXP_TARGET
#    First arg is the basedir
#    Second arg is the source
#    Third arg is the link
#
symlink () {
    if [ "$#" -lt 3 ]
    then
        # logfile ERROR "Wrong number of args to symlink: $*"
        TEXT=`gettext "Wrong number of args to symlink: %s"`
        TEXT=`printf "${TEXT}" "$*"`
	logfile ERROR "${TEXT}"
	return 1
    fi

    cd ${EXP_TARGET}/$1
    ln -s $2 $3
    logfile "link: $3 -> $2 in $1"
}

#
# get a file
#    First arg is file to copy
#    Optional second arg is directory to store it in
#
get_file () {
    FTP=""
    if [ "$#" -lt 1 ]
    then
        # logfile ERROR "Wrong number of args to get_file: $*"
        TEXT=`gettext "Wrong number of args to get_file: %s"`
        TEXT=`printf "${TEXT}" "$*"`
	logfile ERROR "${TEXT}"
	return 1
    fi

    FILES=$1

    # Get file via ftp?
    echo "$2" | egrep -s -e "^ftp:"
    if [ "$?" -eq 0 ]
    then
        HOST=`echo $2 | nawk -F: '{print $2}'`
        PASS=`echo $2 | nawk -F: '{print $3}'`
        CDIR=`echo $2 | nawk -F: '{print $4}'`
	FTP=notempty
	shift
    fi

    # Where does the file go
    if [ -n "$2" ]
    then
	DIR=${EXP_TARGET}/$2
    else
	DIR=${EXP_TARGET}/extra
    fi

    # ftp get
    if [ -n "${FTP}" ]
    then
	# Add to .netrc to allow auto ftp of files
	if [ -f "/.netrc" ]
	then
	    cp /.netrc /.netrc.${EXP_PID}
	    echo "machine ${HOST} login root password ${PASS}" >>/.netrc
	else
	    touch /.netrc
	    chmod 600 /.netrc
	    echo "machine ${HOST} login root password ${PASS}" >>/.netrc
	fi

	# Make sure destination DIR exists
	[ ! -d "${DIR}" ] && { mkdir -p ${DIR}; }
	cd ${DIR}

	# Ftp off certain files
	EXP_TMPFILE="${EXP_TMPDIR}/ftp.${EXP_PID}"
	ftp ${HOST} >${EXP_TMPFILE} 2>&1 <<EOF
bin
prompt
cd ${CDIR}
mget $FILES
quit
EOF
	logfile "file: $FILES"

	# Restore .netrc
	if [ -f "/.netrc.${EXP_PID}" ]
	then
	    mv /.netrc.${EXP_PID} /.netrc
	else
	    rm -f /.netrc
	fi

	# Clean up
	rm -f ${EXP_TMPFILE}

        return
    fi

    # standard get
    for FILE in $FILES
    do
	[ ! -f "${FILE}" ] && return 1

	# If trailing !, filename not destination directory
	echo "$2" | egrep -s -e "!$"
	if [ "$?" -eq 0 ]
	then
	    CDIR=`dirname $DIR`
	    DIR=`echo $DIR | sed -e 's/!$//'`
	    [ ! -d "${CDIR}" ] && { mkdir -p ${CDIR}; }
	else
	    [ ! -d "${DIR}" ] && { mkdir -p ${DIR}; }
	fi

	# Handle links
	if [ -h ${FILE} ]
	then
	    CDIR=`dirname ${FILE}`
	    LINK=`ls -l ${FILE} | awk '/->/ { print $NF }'`

	    # Absolute path, copy it
	    if echo $LINK | egrep -s -e "^\/"
	    then
		# Copy file
		cp -p ${FILE} ${DIR}
		logfile "file: ${FILE}"
		continue
	    fi

	    # Relative path
	    DEST=`basename $FILE`
	    LDIR=`dirname $LINK`
	    LDIR=`echo $LDIR | sed -e "s~^~${DIR}/~"`
	    NEW=`echo $LINK  | sed -e "s~^~${CDIR}/~"`

	    # Make sure the directory exists
	    [ ! -d "${LDIR}" ] && { mkdir -p ${LDIR}; }

	    # Copy file linked to, then cd and link
	    cp -p ${NEW} ${LDIR}
	    (cd ${DIR} ; ln -s ${LINK} ${DEST})

	    logfile "file: ${NEW}"
	    logfile "file: ${FILE} linked to ${LINK}"
	else
	    # Copy file
	    cp -p ${FILE} ${DIR}
	    logfile "file: ${FILE}"
	fi
    done
    return 0
}

#
# get a directory's contents
#    First arg may be recursive, otherwise it is source dir
#    Optional second arg is directory to store files in
get_dir () {
    if [ "$#" -lt 1 ]
    then
        # logfile ERROR "Wrong number of args to get_dir: $*"
        TEXT=`gettext "Wrong number of args to get_dir: %s"`
        TEXT=`printf "${TEXT}" "$*"`
	logfile ERROR "${TEXT}"
	return 1
    fi
    RECURSE=0

    # Check for recursive
    if [ "$1" = "recursive" ]
    then
        RECURSE=1
	shift
    fi
    logfile "dir: $1"

    # Check for empty directories
    FILES=`ls -l $1/* 2>/dev/null | wc -l`
    if [ "${FILES}" -eq 0 ]
    then
	if [ -n "$2" ]
	then
	    DIR="${EXP_TARGET}/$2"
	else
	    DIR="${EXP_TARGET}/extra/`basename $1`"
	fi

	# Make the dir even if it's empty
	[ ! -d "${DIR}" ] && { mkdir -p ${DIR}; }
    fi

    # Walk directory
    for FILE in $1/*
    do
        if [ -d "${FILE}" -a "${RECURSE}" -eq 1 ]
	then
	    # Preserve some directory info
	    if [ -n "$2" ]
	    then
		DIR="$2/`basename ${FILE}`"
	    else
		DIR="extra/`basename $1`/`basename ${FILE}`"
	    fi

	    get_dir recursive ${FILE} ${DIR}
	else
	    # Preserve some directory info
	    if [ -n "$2" ]
	    then
		TAR="$2"
	    else
		TAR="extra/`basename $1`"
	    fi

	    get_file ${FILE} ${TAR}
	fi
    done
}

#
# Get command output
#    First arg is command to run
#    Optional second arg is the 3.x filename or destination dir
#
get_cmd () {
    # Save current LC_ALL and run commands in 'C' locale
    LC_SAVE=${LC_ALL}
    export LC_ALL=C

    if [ "$#" -lt 1 ]
    then
	export LC_ALL=${LC_SAVE}
        # logfile ERROR "Wrong number of args to get_cmd: $*"
        TEXT=`gettext "Wrong number of args to get_cmd: %s"`
        TEXT=`printf "${TEXT}" "$*"`
	logfile ERROR "${TEXT}"
	return 1
    fi

    COMMAND=$1

    # Clean up what is printed
    echo "${COMMAND}" | egrep -s -e " "
    if [ "$?" -eq 0 ]
    then
	CMD=`echo "${COMMAND}" | nawk '{ print $1 }'`
	ARG=`echo "${COMMAND}" | sed -e "s~${CMD} ~~"`
	CDIR=`dirname ${CMD}`
	TMP=`echo "${CMD}" | sed -e "s~${CDIR}/~~"`
	BIN="$TMP $ARG"
    else
	CMD="${COMMAND}"
	CDIR=`dirname ${CMD}`
	BIN=`echo "${CMD}" | sed -e "s~${CDIR}/~~"`
    fi
    export LC_ALL=${LC_SAVE}
    logfile "cmd: ${BIN}"
    export LC_ALL=C

    # ignore option to set SERR=/dev/null
    IGNORE=""
    if [ -n "$2" ]
    then
        if [ "$2" = "ignore" ]
	then
	    IGNORE=notempty
	    shift
	fi
    fi

    # get command via telnet
    TELNET=""
    echo "$2" | egrep -s -e "^telnet:"
    if [ "$?" -eq 0 ]
    then
	TELNET=notempty
	IGNORE=notempty
	TYPE=`echo $2 | nawk -F: '{ print $2 }'`
	HOST=`echo $2 | nawk -F: '{ print $3 }'`
	PASS=`echo $2 | nawk -F: '{ print $4 }'`
	TIME=`echo $2 | nawk -F: '{ print $5 }'`
	CDIR="/bin"

	if [ "${TYPE}" = "t3" ]
	then
	    LOGIN=root
	    LOGOUT=exit
	    PORT=23
	elif [ "${TYPE}" = "sc" ]
	then
	    LOGIN=
	    LOGOUT=disc
	    PORT=5000
	else
	    export LC_ALL=${LC_SAVE}
	    # logfile ERROR "Unknown telnet type for get_cmd: $*"
	    TEXT=`gettext "Unknown telnet type for get_cmd: %s"`
	    TEXT=`printf "${TEXT}" "$*"`
	    logfile ERROR "${TEXT}"
	    return 1
	fi
        shift
    fi

    # Run command as a different user?
    USER=""
    if [ -n "$2" ]
    then
	if echo "$2" | egrep -s -e "user="
	then
	    USER=`echo $2 | nawk -F= '{ print $2 }'`
	    shift
	fi
    fi

    # Do we have a destination dir or explorer3 name
    if [ -n "$2" ]
    then
	echo "$2" | egrep -s -e "/$"

	if [ "$?" -eq 0 ]
	then
	    # Destination dir
	    FILE=`echo "${BIN}" | sed -e 's~/~@~g' -e 's~ ~_~g' -e "s~${CDIR}/~~g"`
	    DIR=`echo "$2" | sed -e "s~/$~~"`

	    # Construct SOUT/SERR
	    SOUT="${EXP_TARGET}/${DIR}/${FILE}.out"
	    SERR="${EXP_TARGET}/${DIR}/${FILE}.err"
	else
	    # explorer 3 name
	    echo "$2" | egrep -s -e "!$"

	    # Use exact name? (name!)
	    if [ "$?" -eq 0 ]
	    then
		# strip !
		FILE=`echo $2 | sed -e "s/!$//"`
		# Construct SOUT/SERR
		SOUT="${EXP_TARGET}/${FILE}"
		SERR="${EXP_TARGET}/${FILE}.err"
	    else
		# Construct SOUT/SERR
		SOUT="${EXP_TARGET}/$2.out"
		SERR="${EXP_TARGET}/$2.err"
	    fi
	fi
    else
	# Filename based removing full path to command
	# and translated '/'='@' and ' '='_'
	FILE=`echo "${BIN}" | sed -e 's~/~@~g' -e 's~ ~_~g' -e "s~${CDIR}/~~g"`

	# Construct SOUT/SERR
	SOUT="${EXP_TARGET}/extra/${FILE}.out"
	SERR="${EXP_TARGET}/extra/${FILE}.err"
    fi

    # Use /dev/null if IGNORE set
    if [ -n "${IGNORE}" ]
    then
        SERR="/dev/null"
    fi

    # Make sure the directory exists
    DIR=`dirname ${SOUT}`
    [ ! -d "${DIR}" ] && { mkdir -p ${DIR}; }

    # Get command via telnet
    if [ -n "${TELNET}" ]
    then
	if [ "${EXP_HOME}" = "/" ]
	then
	    IN_FILE="${EXP_LIB}/cmd.txt"
	else
	    IN_FILE="${EXP_HOME}/etc/cmd.txt"
	fi
	CMD_FILE="${EXP_TMPDIR}/cmd.${EXP_PID}"

	if [ -n "${LOGIN}" ]
	then
	    sed -e "s~HOST~${HOST}~" \
		-e "s~PORT~${PORT}~" \
		-e "s~LOGIN~${LOGIN}~" \
		-e "s~LOGOUT~${LOGOUT}~" \
		-e "s~PASS~${PASS}~" \
		-e "s~TIME~${TIME}~" \
		-e "s~TYPE~${TYPE}~" \
		-e "s~FILE~${SOUT}~" \
		-e "s~CMD~${COMMAND}~" ${IN_FILE} > ${CMD_FILE}
	else
	    sed -e "s~HOST~${HOST}~" \
		-e "s~PORT~${PORT}~" \
		-e "/LOGIN/d" \
		-e "/sleep 3/d" \
		-e "s~LOGOUT~${LOGOUT}~" \
		-e "s~PASS~${PASS}~" \
		-e "s~TIME~${TIME}~" \
		-e "s~TYPE~${TYPE}~" \
		-e "s~FILE~${SOUT}~" \
		-e "s~CMD~${COMMAND}~" ${IN_FILE} > ${CMD_FILE}
	fi
	
	# Make cmd file executeable
	chmod 700 ${CMD_FILE}

	# Execute command via telnet
	${CMD_FILE} | telnet >>${SOUT} 2>>${SERR}
	rc=$?

	# Clean up
	rm -f ${CMD_FILE}
	export LC_ALL=${LC_SAVE}
	return 0
    fi

    # Force use of full path name on executable
    if [ ! -f "${CMD}" ]
    then
	export LC_ALL=${LC_SAVE}
        # logfile WARNING "${CMD} not found"
        TEXT=`gettext "%s not found"`
        TEXT=`printf "${TEXT}" "${CMD}"`
	logfile WARNING "${TEXT}"
	return 1
    fi

    # Make sure it's executeable
    if [ ! -x "${CMD}" ]
    then
	export LC_ALL=${LC_SAVE}
        # logfile WARNING "Unable to execute ${CMD}"
        TEXT=`gettext "Unable to execute %s"`
        TEXT=`printf "${TEXT}" "${CMD}"`
	logfile WARNING "${TEXT}"
	return 1
    fi

    # Execute command
    if [ -z "${USER}" ]
    then
	ksh -p -c "${COMMAND}" >>${SOUT} 2>>${SERR}
	rc=$?
    else
	su ${USER} -c "${COMMAND}" >>${SOUT} 2>>${SERR}
	rc=$?
    fi
    export LC_ALL=${LC_SAVE}
    logfile "cmd: exit status: $rc"
    return $rc
}

#
# which_gate foo bar
# return non-zero if neither foo nor bar is in the ${EXP_WHICH} directive
# order of arguments is important.  which_gate foo bar returns zero on
# "foo,!bar" but one on "!foo,bar".
#
which_gate () {
    for i in $*
    do
	test `expr "${EXP_WHICH}" : ".*!\<$i\>.*"` -ne 0 && return 1
	test `expr "${EXP_WHICH}" :  ".*\<$i\>.*"` -ne 0 && return 0
    done

    return 1
}

#
# returns non-zero if all of the components of the ${EXP_WHICH} variable
# are negative (start with a ! character).
#
which_negative_check () {
    for i in `echo ${EXP_WHICH} | sed -e 's/,/ /g'`
    do
	expr "$i" : "^!" >/dev/null || return 0
    done
    return 1
}

#
# used by scripts to determine if they are executed (-w)
#
which_gate_exit () {
    which_gate $*
    if [ "$?" -eq 0 ]
    then
	TEXT=`gettext "RUNNING"`
	logfile NOTNOISE "${TEXT}"
    else
	TEXT=`gettext "SKIPPING"`
	logfile "${TEXT}"
	exit 0
    fi
}
  070701001e87cd000081a00000007000000064000000013aa56788000006b200000020000001f800000000000000000000001800000004reloc/lib/exp_transport   #!/bin/ksh -p
#  exp_transport: transport mechanism
#  $Id: //depot/dev/proactive/explorer3/lib/exp_transport#9 $
EXP_TRANSPORT_VERSION='$Revision: #9 $'
export EXP_TRANSPORT_VERSION

if [ -n "${DO_VERSION}" ]
then
    LIB=`basename $0`
    echo "${LIB} version: ${EXP_TRANSPORT_VERSION}"
    exit
fi

# Source common functions
. ${EXP_LIB}/exp_common

# Must have EXP_TRANSPORT
require 'test -n "${EXP_TRANSPORT}"'

for i in `echo ${EXP_TRANSPORT} | sed -e 's/,/ /g'`
do
    TRANSPORT=`echo $i | nawk -F: '{ print $1}'`
    DEST=`echo $i | sed -e "s~${TRANSPORT}:~~"`

    case "${TRANSPORT}" in
        mailto)
	    # Bundle up mail so we send once, not for each address
	    if [ -z "${EXP_MAILTO}" ]
	    then
	        EXP_MAILTO="${DEST}"
	    else
	        EXP_MAILTO="${EXP_MAILTO},${DEST}"
	    fi
	    ;;
	http)
	    # logfile WARNING "Transport ${TRANSPORT} not currently implemented"
	    TEXT=`gettext "Transport %s not currently implemented"`
	    TEXT=`printf "${TEXT}" "${TRANSPORT}"`
	    logfile WARNING "${TEXT}"
	    ;;
	ftp)
	    # Strip ftp://
	    TMP=`echo $i | sed -e 's~ftp://~~'`
	    EXP_FTP=`echo ${TMP} | nawk -F/ '{ print $1 }'`
	    EXP_FTPDEST=`echo ${TMP} | sed -e "s~${EXP_FTP}~~"`
	    export EXP_FTP EXP_FTPDEST
	    ksh -p ${EXP_LIB}/exp_ftp
	    ;;
	file)
	    # Do file transport (put explorer on tape)
	    EXP_DEVICE=${DEST}
	    export EXP_DEVICE
	    ksh -p ${EXP_LIB}/exp_file
	    ;;
	*)
	    # logfile WARNING "Unknown transport: ${TRANSPORT}"
	    TEXT=`gettext "Unknown transport: %s"`
	    TEXT=`printf "${TEXT}" "${TRANSPORT}"`
	    logfile WARNING "${TEXT}"
	    ;;
    esac
done

# Do mail transport to all addresses
export EXP_MAILTO
ksh -p ${EXP_LIB}/exp_mail
  0707010003078b000041e80000007000000064000000033b01aeef0000000000000020000001f800000000000000000000001100000004reloc/lib/locale  07070100030d28000041e80000007000000064000000033b01aeef0000000000000020000001f800000000000000000000001300000004reloc/lib/locale/C    07070100031d9f000041e80000007000000064000000023b01aeef0000000000000020000001f800000000000000000000001f00000004reloc/lib/locale/C/LC_MESSAGES    07070100031da2000081a00000007000000064000000013b01aeeb0000195c00000020000001f800000000000000000000002b00000004reloc/lib/locale/C/LC_MESSAGES/explorer.mo       (   Q  
  
                    '   '      I   I   m   m                                                     "  "  F  F   
     k  k                                            0  0   	     T  T  p  p                                           <  <     j  j          "                      !              %       $      @  @   #   &  h  h   '              <           )   +       ,  $  $  6  6   *   /  I  I  a  a   .   0  z  z   1           -   7           3   5       6             4   9      -  -   8   :  D  D   ;  h  h       2   F           =   ?       @  6  6  U  U   >   C  u  u       B   D       E           A   K  /  /  W  W   G   I  n  n   J           H   N       M           L   O       P  	  	  	  	using mpack to construct MIME messages root password for %s is incorrect removing previous explorers from %s mpack not available, manual build of MIME messages masking IPv4 addresses local time: %s data collection complete argument %s requires option Wrong number of args to touch_file: %s Wrong number of args to symlink: %s Wrong number of args to get_file: %s Wrong number of args to get_dir: %s Wrong number of args to get_cmd: %s Wrong number of args to echo_file: %s VxVM not installed VxFS not installed Verifying connection to %s Unknown transport: %s Unknown telnet type for get_cmd: %s Unable to write to %s on %s Unable to parse showboards for %s Unable to find %s in /.netrc, please update Unable to execute %s Unable to connect to %s Transport %s not currently implemented This node is currently not in the cluster Sybase installed but %s/sybtab does not exist StorTools not installed StorTools Diagnostics not installed Solstice Backup not installed SQL server file %s not found SMS not installed SKIPPING SDS not installed RUNNING Please use the full path for command '%s' Please enter the root password for %s:  Please enter the name of the T3:  Please enter the name of the SC:  Patch %s-%s is not installed. Skipping pmfadm -l collection Not an SSP system Not an FT1800 system No photons installed No SSAs installed No A3X00 installed NetBackup not installed Must be run on SunOS 5.x Must be run as root Missing %s on %s Luxadm not installed FRUid not installed Explorer started Explorer interrupted Explorer finished Explorer exited EXP_TARGET=%s already exists EMCpower not installed Config file %s for SID %s not found Collecting data via the token interface from %s Collecting data for enclosures %s Collecting command line files Collecting command line commands Collecting Sun Cluster 2.x Configuration and Runtime info... Cluster software not installed Cluster is running on this node Cluster is NOT running on this node Cannot locate default_clustername file, exiting script Cannot locate SUNWsc package ... cluster collection skipped CST not installed AP not installed = = = stderr output from explorer = = = %s split into %s parts %s sent via tar to %s %s sent via mail to %s %s sent via ftp to %s%s %s not found %s is not a System Controller %s is not a StorEdge T3 %s created 
You will be prompted for a T3 name and password.
    If hostname cannot be resolved, please use IP address.

Type return to end the list.

 
You will be prompted for a System Controller name
    If hostname cannot be resolved, please use IP address.

Type return to end the list.

 using mpack to construct MIME messages root password for %s is incorrect removing previous explorers from %s mpack not available, manual build of MIME messages masking IPv4 addresses local time: %s data collection complete argument %s requires option Wrong number of args to touch_file: %s Wrong number of args to symlink: %s Wrong number of args to get_file: %s Wrong number of args to get_dir: %s Wrong number of args to get_cmd: %s Wrong number of args to echo_file: %s VxVM not installed VxFS not installed Verifying connection to %s Unknown transport: %s Unknown telnet type for get_cmd: %s Unable to write to %s on %s Unable to parse showboards for %s Unable to find %s in /.netrc, please update Unable to execute %s Unable to connect to %s Transport %s not currently implemented This node is currently not in the cluster Sybase installed but %s/sybtab does not exist StorTools not installed StorTools Diagnostics not installed Solstice Backup not installed SQL server file %s not found SMS not installed SKIPPING SDS not installed RUNNING Please use the full path for command '%s' Please enter the root password for %s:  Please enter the name of the T3:  Please enter the name of the SC:  Patch %s-%s is not installed. Skipping pmfadm -l collection Not an SSP system Not an FT1800 system No photons installed No SSAs installed No A3X00 installed NetBackup not installed Must be run on SunOS 5.x Must be run as root Missing %s on %s Luxadm not installed FRUid not installed Explorer started Explorer interrupted Explorer finished Explorer exited EXP_TARGET=%s already exists EMCpower not installed Config file %s for SID %s not found Collecting data via the token interface from %s Collecting data for enclosures %s Collecting command line files Collecting command line commands Collecting Sun Cluster 2.x Configuration and Runtime info... Cluster software not installed Cluster is running on this node Cluster is NOT running on this node Cannot locate default_clustername file, exiting script Cannot locate SUNWsc package ... cluster collection skipped CST not installed AP not installed = = = stderr output from explorer = = = %s split into %s parts %s sent via tar to %s %s sent via mail to %s %s sent via ftp to %s%s %s not found %s is not a System Controller %s is not a StorEdge T3 %s created 
You will be prompted for a T3 name and password.
    If hostname cannot be resolved, please use IP address.

Type return to end the list.

 
You will be prompted for a System Controller name
    If hostname cannot be resolved, please use IP address.

Type return to end the list.

 07070100031da3000081a00000007000000064000000013af0484500001ba700000020000001f800000000000000000000002b00000004reloc/lib/locale/C/LC_MESSAGES/explorer.po    domain "explorer"
msgid "RUNNING"
msgstr "RUNNING"
msgid "SKIPPING"
msgstr "SKIPPING"
msgid "Must be run on SunOS 5.x"
msgstr "Must be run on SunOS 5.x"
msgid "Must be run as root"
msgstr "Must be run as root"
msgid "EXP_TARGET=%s already exists"
msgstr "EXP_TARGET=%s already exists"
msgid "local time: %s"
msgstr "local time: %s"
msgid "data collection complete"
msgstr "data collection complete"
msgid "%s created"
msgstr "%s created"
msgid "= = = stderr output from explorer = = ="
msgstr "= = = stderr output from explorer = = ="
msgid "removing previous explorers from %s"
msgstr "removing previous explorers from %s"
msgid "Explorer finished"
msgstr "Explorer finished"
msgid "%s sent via tar to %s"
msgstr "%s sent via tar to %s"
msgid "Missing %s on %s"
msgstr "Missing %s on %s"
msgid "Unable to write to %s on %s"
msgstr "Unable to write to %s on %s"
msgid "%s sent via ftp to %s%s"
msgstr "%s sent via ftp to %s%s"
msgid "mpack not available, manual build of MIME messages"
msgstr "mpack not available, manual build of MIME messages"
msgid "using mpack to construct MIME messages"
msgstr "using mpack to construct MIME messages"
msgid "%s split into %s parts"
msgstr "%s split into %s parts"
msgid "%s sent via mail to %s"
msgstr "%s sent via mail to %s"
msgid "Explorer interrupted"
msgstr "Explorer interrupted"
msgid "masking IPv4 addresses"
msgstr "masking IPv4 addresses"
msgid "Wrong number of args to touch_file: %s"
msgstr "Wrong number of args to touch_file: %s"
msgid "Wrong number of args to echo_file: %s"
msgstr "Wrong number of args to echo_file: %s"
msgid "Wrong number of args to symlink: %s"
msgstr "Wrong number of args to symlink: %s"
msgid "Wrong number of args to get_file: %s"
msgstr "Wrong number of args to get_file: %s"
msgid "Wrong number of args to get_dir: %s"
msgstr "Wrong number of args to get_dir: %s"
msgid "Wrong number of args to get_cmd: %s"
msgstr "Wrong number of args to get_cmd: %s"
msgid "Unknown telnet type for get_cmd: %s"
msgstr "Unknown telnet type for get_cmd: %s"
msgid "%s not found"
msgstr "%s not found"
msgid "Unable to execute %s"
msgstr "Unable to execute %s"
msgid "Transport %s not currently implemented"
msgstr "Transport %s not currently implemented"
msgid "Unknown transport: %s"
msgstr "Unknown transport: %s"
msgid "Config file %s for SID %s not found"
msgstr "Config file %s for SID %s not found"
msgid "Sybase installed but %s/sybtab does not exist"
msgstr "Sybase installed but %s/sybtab does not exist"
msgid "SQL server file %s not found"
msgstr "SQL server file %s not found"
msgid "Patch %s-%s is not installed. Skipping pmfadm -l collection"
msgstr "Patch %s-%s is not installed. Skipping pmfadm -l collection"
msgid "Cluster is running on this node"
msgstr "Cluster is running on this node"
msgid "Cluster is NOT running on this node"
msgstr "Cluster is NOT running on this node"
msgid "This node is currently not in the cluster"
msgstr "This node is currently not in the cluster"
msgid "Collecting Sun Cluster 2.x Configuration and Runtime info..."
msgstr "Collecting Sun Cluster 2.x Configuration and Runtime info..."
msgid "Cannot locate default_clustername file, exiting script"
msgstr "Cannot locate default_clustername file, exiting script"
msgid "Collecting Sun Cluster 2.x Configuration and Runtime info..."
msgstr "Collecting Sun Cluster 2.x Configuration and Runtime info..."
msgid "Cannot locate SUNWsc package ... cluster collection skipped"
msgstr "Cannot locate SUNWsc package ... cluster collection skipped"
msgid "Collecting command line files"
msgstr "Collecting command line files"
msgid "Collecting command line commands"
msgstr "Collecting command line commands"
msgid "Please use the full path for command '%s'"
msgstr "Please use the full path for command '%s'"
msgid "Verifying connection to %s"
msgstr "Verifying connection to %s"
msgid "Unable to connect to %s"
msgstr "Unable to connect to %s"
msgid "Unable to parse showboards for %s"
msgstr "Unable to parse showboards for %s"
msgid "Verifying connection to %s"
msgstr "Verifying connection to %s"
msgid "Unable to connect to %s"
msgstr "Unable to connect to %s"
msgid "Collecting data via the token interface from %s"
msgstr "Collecting data via the token interface from %s"
msgid "Collecting data for enclosures %s"
msgstr "Collecting data for enclosures %s"
msgid "\nYou will be prompted for a System Controller name\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"
msgstr "\nYou will be prompted for a System Controller name\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"
msgid "Please enter the root password for %s: "
msgstr "Please enter the root password for %s: "
msgid "\nYou will be prompted for a T3 name and password.\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"
msgstr "\nYou will be prompted for a T3 name and password.\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"
msgid "Please enter the name of the T3: "
msgstr "Please enter the name of the T3: "
msgid "Please enter the name of the SC: "
msgstr "Please enter the name of the SC: "
msgid "%s is not a System Controller"
msgstr "%s is not a System Controller"
msgid "%s is not a StorEdge T3"
msgstr "%s is not a StorEdge T3"
msgid "root password for %s is incorrect"
msgstr "root password for %s is incorrect"
msgid "Please enter the root password for %s: "
msgstr "Please enter the root password for %s: "
msgid "Unable to find %s in /.netrc, please update"
msgstr "Unable to find %s in /.netrc, please update"
msgid "argument %s requires option"
msgstr "argument %s requires option"
msgid "Cluster software not installed"
msgstr "Cluster software not installed"
msgid "FRUid not installed"
msgstr "FRUid not installed"
msgid "No photons installed"
msgstr "No photons installed"
msgid "Luxadm not installed"
msgstr "Luxadm not installed"
msgid "Solstice Backup not installed"
msgstr "Solstice Backup not installed"
msgid "NetBackup not installed"
msgstr "NetBackup not installed"
msgid "SDS not installed"
msgstr "SDS not installed"
msgid "SMS not installed"
msgstr "SMS not installed"
msgid "No A3X00 installed"
msgstr "No A3X00 installed"
msgid "No SSAs installed"
msgstr "No SSAs installed"
msgid "Not an SSP system"
msgstr "Not an SSP system"
msgid "StorTools not installed"
msgstr "StorTools not installed"
msgid "AP not installed"
msgstr "AP not installed"
msgid "Not an FT1800 system"
msgstr "Not an FT1800 system"
msgid "StorTools Diagnostics not installed"
msgstr "StorTools Diagnostics not installed"
msgid "VxFS not installed"
msgstr "VxFS not installed"
msgid "VxVM not installed"
msgstr "VxVM not installed"
msgid "EMCpower not installed"
msgstr "EMCpower not installed"
msgid "CST not installed"
msgstr "CST not installed"
msgid "Explorer started"
msgstr "Explorer started"
msgid "Explorer finished"
msgstr "Explorer finished"
msgid "Explorer exited"
msgstr "Explorer exited"
msgid "Explorer interrupted"
msgstr "Explorer interrupted"
 070701001e87ce000081a00000007000000064000000013a7886e0000007f600000020000001f800000000000000000000001100000004reloc/lib/uu2b64  #!/usr/bin/nawk -f
#  uu2b64: convert uuencoded file to base64
#  $Id$
#
#  Possible usage:
#      tar cf - <dir> | compress -c | uuencode "${EXP_FNAME}.tar.Z" | nawk -f uu2b64

BEGIN {
	ORS = "";

	for (i = 32; i < 96; i++) {
		uuchars = uuchars sprintf("%c", i);
	}

	b64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	b64chars = b64chars "abcdefghijklmnopqrstuvwxyz";
	b64chars = b64chars "0123456789+/";

}

#
# convert a string of uuencoded characters to base64 characters
#
function uu2b64 (uustring, b64string) {
	for (i = 1; i <= length(uustring); i++) {
		if (val = index(uuchars, substr(uustring, i, 1))) {
			b64string = b64string substr(b64chars, val, 1);
		}
	}
	return b64string;
}

# uuencode and base64 both follow a 3-bytes => 4-printable-characters scheme.
# base64 specifies that when the input is not a multiple of three, that bytes
# of all zeroes be encoded.  uuencode, however, leaves slop it its remaining
# bits, and instead has a length of valid bytes (not sextets) specified as the
# first character of each line.

# so, sex2() and sex3() will "clean up" the 2nd or 3rd sextet that was left
# behind by uuencode, assuming the 2nd or 3rd byte is invalid.

function sex2 (uuchar, uuvalue, clean) {
	uuvalue = index(uuchars, uuchar) - 1;
	clean = 16 * int(uuvalue / 16);
	return substr(b64chars, clean + 1, 1);
}

function sex3 (uuchar, uuvalue, clean) {
	uuvalue = index(uuchars, uuchar) - 1;
	clean = 4 * int(uuvalue / 4);
	return substr(b64chars, clean + 1, 1);
}

# main loop assumes that only the last line of uuencode output may have
# a number of valid bytes not divisible by three.

! /(^begin |^end$|^ $)/ {
	uubytes = index(uuchars, substr($0, 1, 1)) - 1;
	trios = int(uubytes / 3);
	clean = trios * 4;
	cruft = uubytes % 3;

	print uu2b64(substr($0, 2, clean));

	if (cruft != 0) {
		print uu2b64(substr($0, 2 + clean, 1));
		if (cruft == 1) {
			print sex2(substr($0, 3 + clean, 1)) "==";
		} else {
			print uu2b64(substr($0, 3 + clean, 1));
			print sex3(substr($0, 4 + clean, 1)) "=";
		}
	}

	print "\n";
}
  07070100032323000041e80000007000000064000000053b01aeef0000000000000020000001f800000000000000000000000a00000004reloc/man 07070100032898000041e80000007000000064000000023b01aeef0000000000000020000001f800000000000000000000001000000004reloc/man/man1m   0707010003289b000081a00000007000000064000000013afb2dbd00001b9300000020000001f800000000000000000000001c00000004reloc/man/man1m/explorer.1m   '\" t
.\" ident "$Id: //depot/dev/proactive/explorer3/man/man1m/explorer.1m#10 $"
.TH explorer 1M "5/10/2001" Explorer "Sun Data Collector"
.SH NAME
explorer \- gather system configuration information
.SH SYNOPSIS
.LP
.TS
tab(^);
r1 l.
explorer^\-version
explorer^\-help

explorer^
^[ \-h \fI<explorer-home>\fR ]
^[ \-d \fI<defaults-file>\fR ]
^[ \-l \fI<log-file>\fR ]
^[ \-e | \-mail ]	
^[ \-E \fI<email-address>\fR | \-myemail \fI<email-address>\fR ]
^[ \-t \fI<output-directory>\fR | \-target \fI<output-directory>\fR ]
^[ \-r ]
^[ \-R \fI<email-address>\fR ]
^[ \-k | \-keep ]
^[ \-f \fI<file>\fR ]
^[ \-c \fI<command>\fR ]
^[ \-w \fI<module-list>\fR ]
^[ \-v | \-verbose ]
^[ \-q | \-quiet ]
^[ \-s \fI<mail-subject>\fR ]
^[ \-case \fI<case-number>\fR ]
^[ \-esc \fI<escalation-number>\fR ]
^[ \-sn \fI<serial-number>\fR ]
^[ \-transport \fI<transport>\fR ]
.TE
.SH DESCRIPTION
.LP
The explorer command gathers extensive system information.  The explorer
output can be automatically emailed to the explorer database.
.SH OPTIONS
.LP
The following options can be used with explorer:
.IP "\-help"
Display this information.
.IP "\-version"
Display explorer revision level.
.IP "\-h \f2<explorer-home>\f1"
Use \f2<explorer-home>\f1 for the top directory of the explorer installation.
.IP "\-d \f2<defaults-file>\f1"
Uses \f2<defaults-file>\f1 to override default values.  See explorer(4) for
the format of the defaults file.
.IP "\-l \f2<log-file>\f1"
Use \f2<log-file>\f1 to collect all log messages.
.IP "\-e | \-mail"
Can be used to automatically email explorer output to the recipients specified
in the \fBetc/default/explorer\fR configuration file.
.RS
.IP "E-mail issue"
All e-mail directed to SUN is reverse address checked. If the sender's
return address is not a valid, 'reachable' address, the mail is rejected. 
.RE
.IP "\-E \f2<email-address>\f1 | \-myemail \f2<email-address>\f1"
Automatically email explorer output to \fI<email-address>\fR of your choice.
.IP "\-t \f2<output-directory>\f1 | \-target \f2<output-directory>\f1"
Specify an alternate directory to save explorer output.
.IP "\-r"
Use User email address in \fBetc/default/explorer\fR file for address where
receipts of explorer should go.  This feature is not currently implemented
on the receiving end.
.IP "\-R \f2<email-address>\f1"
Use \fI<email-address>\fR for address where receipts of explorer should go.
.IP "\-k | \-keep"
Keep old explorer run outputs.  Default is to remove old copies and keep
the latest.
.IP "\-f \f2<file>\f1"
Add \fI<file>\fR to list of files to collect, files can be found in the extra/
directory.  To collect multiple files, use multiple -f options or seperate with
a ','. For example:
.IP
explorer -f /etc/motd -f /etc/defaultdomain,/etc/nsswitch.conf
.IP "\-c \f2<command>\f1"
Add output of \fI<command>\fR to what explorer collects, output can be found
in the extra/ directory.  The command should be the absolute path to the binary
to be executed.  If options are needed, use quotes to enclose the command. To
collect multiple commands, use multiple -c options or seperate with a ','.
For example:
.IP
explorer -c "/usr/bin/lpstat -t" -c "/bin/ls -l /tmp,/bin/ls -l /dev"
.IP "\-w \f2<module-list>\f1"
Select the modules to run, comma ',' seperated.  'default' is used if no -w
option given.
Options to -w can be names of scripts in the tools/ directory, like disks,
netinfo, ssp, etc, var.  It may also include an alias for a set of tools to
run.  Aliases currently supported are: default, all, extended, interactive,
storage, network, backup, sf15000, starfire, printer and license.  Preceding
a module or alias with '!' will turn off the running of module.  In addition,
IPv4 addresses may be masked by using !ipaddr.
.IP
Interactive modules are used to get information from the user
about StorEdge T3s (t3extended) and Serengeti System Controllers (scextended).
These modules will prompt for the hostname of a T3 or System Controller
and the root password.  A single carriage return will let the module know
that the list of hosts is finished.
.IP
The interactive modules can be run by default if input files exist that
contain the machine and root password.  The input files are located in
EXP_HOME/etc/ and are scinput.txt and t3input.txt for System Controller
and T3 respectively.  The mode of the file must be such that group and
other are unavailable (ls -l mode is -r--------).  If the input files
do not have the right permissions, no data collection will occur.
.RS
.IP EXAMPLES
.IP "-w disks"
Run only the disks module.
.IP "-w network,!ipaddr"
Run various network modules and mask the IPv4 addresses.
.IP "-w storage"
Collect storage data and extended data from StorEdge T3s if t3input.txt exists.
.IP "-w extended"
Collect only extended data from StorEdge T3s and Serengeti System Controllers for
hosts in t3input.txt and scinput.txt
.IP "-w default,interactive"
Collect default modules and prompt user for extended data collect for StorEdge T3
and Serengeti System Controllers.
.RE
.RS
.IP NOTE
.IP t3extended
In order to collect all T3 extended data, explorer must be run from a root
login shell by using either "su -" or "telnet".
.RE
.IP "\-v | \-verbose"
Display detailed progress while the explorer command is run.
.IP "\-q | \-quiet"
Supress printing of all log messages.
.IP "\-s \f2<mail-subject>\f1"
Change the mail subject to that specified.  Variable expansion will be done
on %F (explorer file name), %C (Customer name), %I (Contract ID), %E (explorer
ID) and %H (hostid).
.IP "\-case \f2<case-number>\f1"
Will add the Radiance Case Number to the README file.
.IP "\-esc \f2<escalation-number>\f1"
Will add the Escalation Number to the README file.
.IP "\-sn \f2<serial-number>\f1"
Provide the serial number for the machine running explorer.  The serial
number overrides the defaults file and will only be seen in the README file.
.IP "\-transport \f2<transport>\f1"
The following transport mechanisms are supported: mailto, ftp and file.
Multiple transports may be used.
In order to use ftp as the transport, the \fI/.netrc\fR file must be
configured with the host, user and password
.RS
.LP "Sample .netrc"
machine ftp.gnu.org login anonymous password eng@sun.com
.IP "Send to eng@sun.com"
explorer -transport mailto:eng@sun.com
.IP "Send to tape device /dev/rmt/0"
explorer -transport file:/dev/rmt/0
.IP "Send to ftp site"
explorer -transport ftp://ftp.gnu.org/pub/incoming
.RE
.SH REQUIREMENTS
.LP
\(bu
explorer requires root privileges to run.
.br
\(bu
ftp transport requires root login shell (su -).
.br
\(bu
root needs write privileges to the \fI<output-directory>\fR.
.br
\(bu
explorer works on Solaris 2.x only.
.SH SUPPORTED HARDWARE AND OPERATING SYSTEMS
.LP
The following hardware has been tested (uname -p):
.LP
\(bu
sun4m
.br
\(bu
sun4d
.br
\(bu
sun4u
.br
\(bu
i386
.LP
The following releases of the Solaris operating system have been tested (uname -r):
.LP
\(bu
5.3
.br
\(bu
5.4
.br
\(bu
5.5
.br
\(bu
5.5.1
.br
\(bu 
5.6
.br
\(bu
5.7
.br
\(bu
5.8
.br
.SH "SEE ALSO"
explorer(4), explorer(5), netrc(4)
 0707010003391c000041e80000007000000064000000023b01aeef0000000000000020000001f800000000000000000000000f00000004reloc/man/man4    07070100033930000081a00000007000000064000000013aa5678800000baf00000020000001f800000000000000000000001a00000004reloc/man/man4/explorer.4 '\" t
.\" ident "$Id: //depot/dev/proactive/explorer3/man/man4/explorer.4#6 $"
.TH explorer 4 "2/13/2001" Explorer "Sun Data Collector"
.SH NAME
explorer \- local configuration information (defaults)
.SH DESCRIPTION
.PP
The \fBetc/default/explorer\fR configuration file is created or updated at
the time of installation. It contains customer, user, and system information,
as shown in the following example:
.TS
tab(^) box;
r0 l.
EXP_ADDRESS_1=^"500 Eldorado Blvd."
EXP_ADDRESS_2=^"MS: UWES01-252"
EXP_ADDRESS_CITY=^"Broomfield"
EXP_ADDRESS_COUNTRY=^"USA"
EXP_ADDRESS_STATE=^"CO"
EXP_ADDRESS_ZIP=^"80021"
EXP_CONTRACT_ID=^"SC007"
EXP_CRON_WHICH=^"adm,lp,root,sys,uucp"
EXP_CUSTOMER_NAME=^"Sun Microsystems, Inc."
EXP_DEFAULTS=^"/opt/SUNWexplo/etc/default/explorer"
EXP_EMAIL=^"explorer-database-americas@sun.com,joe.engineer@Central.Sun.COM"
EXP_EMAIL_SPLIT=^"4194304"
EXP_GEO=^"AMERICAS"
EXP_HOME=^"/opt/SUNWexplo"
EXP_LIB=^"/opt/SUNWexplo/lib"
EXP_PATH=^"/usr/bin:/usr/sbin:/opt/sfw/bin"
EXP_PHONE=^"x77146"
EXP_REPLY=^"joe.engineer@Central.Sun.COM"
EXP_SERIAL_80a9ed93=^"917H2A35"
EXP_SERIAL_80c05b5d=^"FW01340130"
EXP_SUBJECT=^"%C %I %E"
EXP_USER_EMAIL=^"joe.engineer@Central.Sun.COM"
EXP_USER_NAME=^"Joe Engineer"
EXP_WHICH=^"default"
.TE    
.PP
\fB/etc/default/explorer\fR is the old defaults file and uses an incompatible
format with the new defaults file.  The old file is read during install to
obtain default values and is removed at the end of installation.
.SH "VARIABLES"
.IP "\fBEXP_EMAIL_SPLIT\fR"
The \fBEXP_EMAIL_SPLIT\fR variable is used to split explorer output that is
too large for mail servers.  Valid values are between 1049576 (1MB) and 9437184
(9MB).  The default is 4194304 (4MB).
.IP "\fBEXP_PATH\fR"
The \fBEXP_PATH\fR variable is used to inform explorer where to look for 
support binaries like gzip and mpack.
.IP "\fBEXP_SUBJECT\fR"
The \fBEXP_SUBJECT\fR variable is used to change the subject line on
explorer output mail.  Variable substitution is available for the following
variables:
.RS
.IP %C
Substitute the Customer Name
.IP %E
Substitute the Explorer ID
.IP %F
Substitute the Explorer Filename
.IP %H
Substitute the Host ID
.IP %I
Substitute the Contract ID
.RE
.IP "\fBEXP_GEO\fR"
The \fBEXP_GEO\fR viarable is used to select the appropriate geography for
this system.  The GEOs are:
.RS
.IP APAC
.br
Asia Pacific
.IP EMEA
.br
Europe, Middle East, Africa
.IP AMERICAS
North, Central and South America
.RE
.IP "\fBEXP_SERIAL_<HOSTID>\fR"
Serial numbers can be stored for many hostids in one defaults file.
.IP "\fBEXP_CONTRACT_ID\fR"
This is the customer's Spectrum Contract ID
.IP "\fBEXP_CRON_WHICH\fR"
Explorer collects crontab files based on the \fBEXP_CRON_WHICH\fR variable.
This should be a comma seperated list of crontab files.
.IP "\fBEXP_WHICH\fR"
The \fBEXP_WHICH\fR variable is used to control what modules explorer should
run.  See explorer(1M) discussion on -w switch for more information.
.PP
.SH "SEE ALSO"
explorer(1M), explorer(5)
 07070100033bd1000041e80000007000000064000000023b01aeef0000000000000020000001f800000000000000000000000f00000004reloc/man/man5    07070100033bd4000081a00000007000000064000000013afb2dbd00001b1300000020000001f800000000000000000000001a00000004reloc/man/man5/explorer.5 '\" t
.\" ident "$Id: //depot/dev/proactive/explorer3/man/man5/explorer.5#10 $"
.TH explorer 5 "5/10/2001" Explorer "Sun Data Collector"
.SH NAME
explorer \- gather system configuration information
.SH DESCRIPTION
.SS "What is explorer?"
.LP
Explorer is a support tool used to collect pertinent data from a
system running Solaris.
.SS "Why use explorer?"
.LP
Sun engineers use explorer to describe a system's configuration
or to troubleshoot a problem.
.SS "How does explorer collect the data?"
.LP
Explorer is simply a shell script which calls a collection of
tools to get the data.  If selected, explorer will tar and compress
the data and email it to Sun or to a designated recipient.
.SS "What does explorer collect?"
.LP
The explorer script calls scripts located in the
\fB/opt/SUNWexplo/tools\fR directory.  Below is a short
description of what each tool does.
.RS
.IP "cluster"
This script collects information on Sun Cluster.
.IP "cmdline"
This scripts processes additional output selected on the command
line with -f and -c.
.IP "cst"
.br
This scripts Configuration and Service Tracker information.
.IP "disks"
This script collects disk information.
.IP "emc"
.br
This script collects EMC Powerpath information.
.IP "etc"
.br
This script collects configuration files in \fB/etc\fR.
.IP "fru"
.br
This script collects FRU information.
.IP "init"
.br
This script collects init scripts in \fB/etc/rc?.d\fR.
.IP "lic"
.br
This script collects license information.
.IP "lp"
.br
This script collects printer information.
.IP "messages"
This script collects messages files in \fB/var/adm\fR.
.IP "nbu"
.br
This script collects NetBackup information.
.IP "ndd"
.br
This script collects network information on network
device drivers.
.IP "netinfo"
This script collects network information.
.IP "patch"
This script collects patch information.
.IP "photon"
This script collects information for Sun StorEdge A5X00.
.IP "pkg"
.br
This script collects package information.
.IP "sbu"
.br
This script collects Solstice Backup information.
.IP "scextended"
This script collects extended Serengeti System Controller information.
If explorer is called with -w interactive, this script will loop
prompting the user for the names and root passwords for each SC.  Otherwise,
the script looks for a list of SCs in the etc/scinput.txt file in EXP_HOME.
The format of the file is the name of the host followed by the root password
on a single line (HOST PASSWORD).
.IP "sds"
.br
This script collects Solstice DiskSuite information.
.IP "sf15000-ndd"
This script collects network device driver information for E15000.
.IP "sf15000-sc"
This script collects System Controller information for E15000.
.IP "sonoma"
This script collects information for Sun StorEdge A3X00.
.IP "ssa"
.br
This script collects information for SPARCstorage Arrays.
.IP "ssp"
.br
This script script collects SSP information.
.IP "stortools"
This script collects STORtools 3.x information.
.IP "sysconfig"
This script collects system configuration information.
.IP "t3"
.br
This script collects basic Sun StorEdge T3 information.
.IP "t3extended"
This script collects extended Sun StorEdge T3 information.
If explorer is called with -w interactive, this script will loop
prompting the user for the names and root passwords for each T3.  Otherwise,
the script looks for a list of T3s in the etc/t3input.txt file in EXP_HOME.
The format of the file is the name of the host followed by the root password
on a single line (HOST PASSWORD).
.IP "u4ft"
.br
This script collects information for Netra FT1800.
.IP "var"
.br
This script collects log and configuration files in \fB/var\fR.
.IP "vtsst"
.br
This script collects SUNWvtsst log and configuration files.
.IP "vxfs"
.br
This script collects Veritas information for VxFS.
.IP "vxvm"
.br
This script collects Veritas information for VxVM.
.RE
.SH OUTPUT
.SS "What does the output of explorer look like?"
.LP
By default explorer writes output to \fB/opt/SUNWexplo/output\fR
with the following format:
.LP
explorer.\fI<hostid>\fR.\fI<hostname>\fR-\fI<date>\fR
.LP
The following files and directories may be seen:
.IP
.TS
tab(^);
r1 l.
cluster/^Cluster data
cst/^CST data
disks/^Disk data
emc/^EMC Powerpath data
etc/^Files from /etc
extra/^Files and commands specified on the command line
fru/^FRUid data
init/^Init scripts
license/^License data
lp/^Printer data
messages/^Messages from /var/adm
nbu/^NetBackup data
netinfo/^Network data
patch+pkg/^Patch and package data
sbu/^Solstice Backup data
sc/^Serengeti System controller data
sf15000/^E15000 data
ssp/^SSP data
sysconfig/^System configuration data
u4ft/^FT1800 data
var/^Log data from /var
vtsst/^Log data from SUNWvtsst
.TE
.SH EXECUTION
.SS "How to run explorer manually."
.LP
By default explorer will collect data displaying key messages with
the output going to \fB/opt/SUNWexplo/output\fR.  See explorer(1M)
for more information on the complete list of options.
.br
.IP "Examples"
.IP "Display more messages and change where output goes"
explorer -verbose -target /var/tmp
.IP "Run explorer, emailing output to a Sun engineer"
explorer -myemail eng@Sun.COM
.IP "Log all commands and files collected"
explorer -l /var/tmp/log
.SS "How to run explorer automatically."
.LP
At installation, the option to run explorer weekly is given.  If yes was selected,
explorer puts an entry in root's crontab.  This can be changed with the \fBcrontab\fR
command.
.IP "Example crontab entries"
.IP "Monthly at midnight on the first day of the month."
0 0 1 * * /opt/SUNWexplo/bin/explorer -e -q
.IP "Weekly at midnight on Sunday."
0 0 * * 0 /opt/SUNWexplo/bin/explorer -e -q
.SS "Collecting extended data"
.LP
Explorer will collect extended data for hosts listed in the input
files etc/scinput.txt and etc/t3input.txt.  These files have the
same format HOSTNAME PASSWORD for each host to collect extended
data on a single line.
Alternately, explorer
can interactively prompt the user for SCs or T3s to collect extended
data.  In the interactive mode (-w interactive), the extended modules
will prompt the user for the hostname and root password.
.IP "Example extended data collection (input files)"
.RS
.IP "Collect storage and extended T3 data"
/opt/SUNWexplo/bin/explorer -w storage
.IP "Collect only Serengeti System Controller data"
/opt/SUNWexplo/bin/explorer -w scextended
.IP "Collect all extended data"
/opt/SUNWexplo/bin/explorer -w extended
.RE
.IP "Example extended data collection (no input files)"
.RS
.IP "Collect all extended data interactively"
/opt/SUNWexplo/bin/explorer -w interactive
.RE
.IP "Example input file"
.RS
.IP "etc/scinput.txt"
# Input file for extended data collection
.br
# Format is HOST PASSWORD
.br
sunfire-sc0 mypassword
.br
# sunfire-sc1 has no password
.br
sunfire-sc1
.IP "etc/t3input.txt"
# Input file for extended data collection
.br
# Format is HOST PASSWORD
.br
finance-t3 $money
.RE
.SH "SEE ALSO"
crontab(1), explorer(1M), explorer(4)
 07070100032324000081a000000070000000640000000139f45db5000000d500000020000001f800000000000000000000001100000004reloc/man/windex  etc/default/explorer		etc/default/explorer (4)    - local configuration information
explorer	explorer (1m)	- gather system configuration information
explorer	explorer (5)	- gather system configuration information
   07070100034146000041e80000007000000064000000023b01aef10000000000000020000001f800000000000000000000000c00000004reloc/tools   07070100034151000081a00000007000000064000000013afb2dbe00007ecb00000020000001f800000000000000000000001400000004reloc/tools/cluster   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/cluster#16 $
#
#  @(#)cluster.sh	1.2 01/02/06
#
#
# Cluster Explorer Script (ClusterSave) for Solstice 1.x and Sun Cluster 2.x
#
# Note:
# Some routines may generate console messages, these can be ignored
# ie. hareg -q <dataservice> - when dataservice is not registered
#

#
# Debug switches
#
#exec 2> /tmp/out
#set -x

# Source common functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

#
# Set global variables
#
# CL_VERSION will indicate which version of SunCluster is installed
# This value is only used for SunCluster 2.x and greater
#
CL_VERSION=0

#
# cluststate flag is used so that commands that require the node to
# be in the cluster don't get executed when the node is out of the cluster
#
cluststate="DOWN"

# =========== Function Definitions ============================================
#
# Generic Database routinues
#

#
#  @(#)oracle_generic.shf       1.1 01/01/10
#
# Generic ORACLE data gathering routinues
#

find_ora_bgdumpdest ()
{
	# the grep pattern has one space and one tab
	BGDUMPDESTLINE=`/bin/grep -i '^[ 	]*background_dump_dest[ 	]*=' ${1}`

	# this param might be in the ifile
	if [ ! -z "${BGDUMPDESTLINE}" ]; then
		BGDUMPDEST=`/bin/echo ${BGDUMPDESTLINE} | /bin/sed 's/^[ 	]*background_dump_dest[ 	]*=//'`
		echo ${BGDUMPDEST}
	else
		# check for ifile
		IFILE_LIST=`/bin/grep -i '^[ 	]*ifile[ 	]*=' ${1} | /bin/cut -d= -f 2`

		for IFILE in ${IFILE_LIST} ; do
			find_ora_bgdumpdest ${IFILE}
		done

	fi
}

#
# oracle_home_data
#	- Collects data based on information from oratab
#
# Input parameters -	
#			$1 -- ${ORAHOME}
#			$2 -- ${ORASID}
#
oracle_home_data()
{
	ORAHOME=$1
	ORASID=$2
	IDUMP="cluster/oracle/${ORASID}"

	[ -z "${ORAHOME}" -o -z "${ORASID}" ] && return

	# while we're here, get the dbms version as well
	get_file "${ORAHOME}/orainst/RELVER" ${IDUMP} || \
		touch_file ${IDUMP}/RELVER.NOTFOUND

	get_file "${ORAHOME}/dbs/init${ORASID}.ora" ${IDUMP} || \
		touch_file ${IDUMP}/init${ORASID}.ora.NOTFOUND
				
	# 
	# Check for tnsnames, listener, and sqlnet
	# in the oracle network directory
	#
	ORANET="${ORAHOME}/network/admin"

	get_file "${ORANET}/listener.ora" ${IDUMP}
	get_file "${ORANET}/sqlnet.ora" ${IDUMP}
	get_file "${ORANET}/tnsnames.ora" ${IDUMP}
}


#
# oracle_base_data
#	- Collect oracle data from ORACLE_BASE
#
# Input parameters
#			$1 - ${ORASID}
#			$2 - ${INITORA}
#
oracle_base_data()
{
	ORASID=$1
	INITORA=$2
	IDUMP="cluster/oracle/${ORASID}"

	[ -z "${ORASID}" -o -z "${ORAHOME}" ] && return

	if [ ! -z "${INITORA}" -a -f "${INITORA}" ]; then
		ERRLOGDIR=`find_ora_bgdumpdest ${INITORA}`

		if [ -z "${ERRLOGDIR}" ]; then
			#
			# Check default location if no other location is
			# found
			#
			TMP=`dirname ${INITORA}`
			ORAHOME=`dirname ${TMP}`
			if [ -f "${ORAHOME}/rdbms/log/alert_${ORASID}.log" ];then
				ERRLOGDIR="${ORAHOME}/rdbms/log"
			fi
		fi

		# Make sure ERRLOGDIR is a directory
		[ ! -d "${ERRLOGDIR}" ] && return

		ERRLOGFILE=${ERRLOGDIR}/alert_${ORASID}.log

		get_file "${ERRLOGFILE}" ${IDUMP} || \
			touch_file ${IDUMP}/alert_${ORASID}.log.NOTFOUND

		if [ -z "${ERRLOGDIR}" ]; then
			break
		fi

		#
		# Grab any tracefiles that were created in
		# the last 14 days
		#
		find ${ERRLOGDIR} -depth -name \*.trc -ctime -14 -print | \
			while read line 
			do
				get_file "${line}" ${IDUMP}/tracefiles
			done

		#
		# Copy the config${SID}.ora files
		#
		DBSDIR=`dirname ${INITORA}`
		IFILE=`grep -i '^[ 	]*ifile[ 	]*=' ${INITORA} \
				 | cut -d= -f 2`
			
		if [ ! -z "${IFILE}" ]; then
			get_file "${IFILE}" ${IDUMP} 
		else
			if [ ! -z "${DBSDIR}" ]; then
				#
				# If the ifile does not exist then assume
				# that the config${SID}.ora file is in the 
				# dbs directory
				#
				get_file "${DBSDIR}/config${ORASID}.ora" ${IDUMP}
			fi
		fi
		# logfile "Config file ${INITORA} for SID ${ORASID} not found"
		TEXT=`gettext "Config file %s for SID %s not found"`
		TEXT=`printf "${TEXT}" "${INITORA}" "${ORASID}"`
		logfile "${TEXT}"
	fi
}

#
# Collects Generic Oracle information
#
oracle_collector()
{
	HAORADIR="/var/opt/oracle"

	#
	# Check the permissioning on $ORACLE_HOME for each instance
	#
	if [ -f "${HAORADIR}/oratab" ]; then
		grep -v "^#" ${HAORADIR}/oratab | while read ORATABLINE ; do
			ORASID=`echo ${ORATABLINE} | cut -d : -f 1`
			ORAHOME=`echo ${ORATABLINE} | cut -d : -f 2`
		
			[ -z "${ORASID}" ] && continue

			#
			# Special case since OPS may have an "*"
			# in the oratab file so we attempt to determine
			# what the oracle SIDS are
			#
			if [ "${ORASID}" = "*" ]; then
				for SID in `ls ${ORAHOME}/dbs/init*.ora | sed -e 's/.*init\(.*\).ora/\1/'`
				do
					[ -z "${SID}" ] && continue

					oracle_home_data ${ORAHOME} ${SID}
				
					#
					# Collect the errorlogs and tracefiles
					#
					INITORA=${ORAHOME}/dbs/init${SID}.ora
					oracle_base_data ${SID} ${INITORA}
				done
			else
				# 
				# There is a valid ORACLE_SID
				#
				oracle_home_data ${ORAHOME} ${ORASID}

				#
				# Collect the errorlogs and tracefiles
				#
				INITORA=${ORAHOME}/dbs/init${SID}.ora
				oracle_base_data ${ORASID} ${INITORA}
			fi
		done
	fi

	#
	# SunCluster 2.x specific 
	# 
	[ ${CL_VERSION} -ne 2 ] && return

	[ "$cluststate" = "DOWN" ] && return
	#
	# Another way to collect some of the data.
	# We only do this if HA-Oracle is installed
	# and the cluster is running
	#
	pkginfo -q SUNWscor
	[ $? -ne 0 ] && return

	#
	# For each instance: 
	#  - get the alert file
	#
	${CLUSTERBIN}/haoracle list | while read HAORALIST; do
		SID=`echo ${HAORALIST} | cut -d : -f 2`
		[ -z "${SID}" ] && continue

		INITORA=`echo ${HAORALIST} | cut -d : -f 9`
	
		oracle_base_data ${SID} ${INITORA}

	done
}
#include oracle_generic

#
#  @(#)sybase_generic.shf       1.1 01/01/10
#
# Generic Sybase collection routines
#
sybase_collector()
{
	IDUMP="cluster/sybase"
	HASYBDIR=/var/opt/sybase

	[ ! -d ${IDUMP} ] && return

	#
	# Get a directory listing of /var/opt/sybase
	#
	get_cmd "/bin/ls -lR ${HASYBDIR}" ${IDUMP}/ls-lR_var_opt_sybase

	#
	# Check the permissioning on $SYBASE_HOME for each instance
	#
	if [ -f ${HASYBDIR}/sybtab ]; then
		grep -v "^#" ${HASYBDIR}/sybtab | while read SYBTABLINE ; do
			SYBINST=`echo ${SYBTABLINE} | cut -d : -f 1`
			SYBHOME=`echo ${SYBTABLINE} | cut -d : -f 2`
	
			DSDUMP=${IDUMP}/${SYBINST}

			# Get the Sybase version
			get_file "${SYBHOME}/init/sqlsrv/version" ${DSDUMP} || \
				touch_file ${DSDUMP}/version.NOTFOUND
			get_file "${SYBHOME}/interfaces" ${DSDUMP} || \
				touch_file ${DSDUMP}/interfaces.NOTFOUND
		done
	else
		# logfile "Sybase installed but ${HASYBDIR}/sybtab does not exist"
		TEXT=`gettext "Sybase installed but %s/sybtab does not exist"`
		TEXT=`printf "${TEXT}" "${HASYBDIR}"`
		logfile "${TEXT}"
	fi

	#
	# SunCluster 2.x specific
	#
	[ ${CL_VERSION} -ne 2 ] && return

	[ "$cluststate" = "DOWN" ] && return
	#
	# For each instance, get the <SQL SERVER>.log file
	#
	${CLUSTERBIN}/hasybase list | while read HASYBLIST; do
		SYBINST=`echo ${HASYBLIST} | cut -d : -f 2`
		RUNSYBINST=`echo ${HASYBLIST} | cut -d : -f 9`

		DSDUMP=${IDUMP}/${SYBINST}
		if [ ! -z "${RUNSYBINST}" -a -f "${RUNSYBINST}" ]; then
			LOGFILE=`cat ${RUNSYBINST} | grep "\-e" | cut -c3- | cut -d " " -f1`
			get_file "${LOGFILE}" ${DSDUMP}
			if [ $? -ne 0 ]; then
				lfile=`basename ${LOGFILE}`
				touch_file ${DSDUMP}/${lfile}.NOTFOUND
			fi
		else
			# logfile "SQL server file ${RUNSYBINST} not found"
			TEXT=`gettext "SQL server file %s not found"`
			TEXT=`printf "${TEXT}" "${RUNSYBINST}"`
			logfile "${TEXT}"
		fi
	done
}
#include sybase_generic

#
#  @(#)informix_generic.shf       1.1 01/01/10
#
# Generic Informix routinues
#

# Collect Generic Informix Info
#
informix_collector()
{
	IDUMP="cluster/informix"
	HAINFDIR=/var/opt/informix

	[ ! -d ${IDUMP} ] && return

	#
	# SunCluster 2.x specific -- Sun Cluster 3.x does not support
	# informix yet
	#
	[ ${CL_VERSION} -ne 2 ] && return

	#
	# If the cluster is down hainformix will fail so return
	#
	[ "$cluststate" = "DOWN" ] && return

	# for each informix database, get the config file
	# and the logfile (not from the /var/opt/informix)
	#
	${CLUSTERBIN}/hainformix list | while read HAINFLIST; do
		CONFIG=`/bin/echo ${HAINFLIST} | /bin/cut -d : -f 2`
		DSDUMP=${IDUMP}/${CONFIG}

		[ -z "${CONFIG}" ] && continue
		[ ! -f "${HAINFDIR}/inftab" ] && continue

		INFDIR=`/bin/grep "${CONFIG}" "${HAINFDIR}/inftab" | /bin/cut -d : -f 2` 2>&1
		if [ -n "${CONFIG}" -a -f "${INFDIR}/etc/${CONFIG}" ]; then
			MSGPATH=`/bin/grep "^MSGPATH" "${INFDIR}/etc/${CONFIG}" | /bin/awk '{print $2}'`
			get_file ${MSGPATH} ${DSDUMP} 
		fi
		if [ -d "${INFDIR}" ]; then
			#
			# copy the config files to file.${CONFIG}.inf.dir
			# to indicate this file has *NOT* been copied	
			# from /var/opt/informix
			#
			get_file "${INFDIR}/etc/sqlhosts" ${DSDUMP} || \
				touch_file ${DSDUMP}/sqlhosts.NOTFOUND
			get_file "${INFDIR}/etc/${CONFIG}" ${DSDUMP} || \
				touch_file ${DSDUMP}/${CONFIG}.NOTFOUND
		fi
	done

	#
	# check the links /usr/lib for informix files
	#
	get_cmd "/bin/ls -l /usr/lib | /bin/grep informix" ${IDUMP}/ls-l_usr_lib

	return
}
#include informix_generic

#
# Cluster specific routinues
#

#
#  @(#)clust_rg_common.shf       1.1 01/01/10
#
# Common routinues used to parse output from scrgadm
#

#
# Get the resource group triplet: 
#	resource group name, resource name, and resource type
#
get_rgs()
{
	/usr/cluster/bin/scrgadm -p | nawk '\
		BEGIN { processing=0 }
		#
		# Get the resource group
		#
		/^Res Group name:/ { 
			processing=1
			rgname=$4
		}
		#
		# If a resource type is seen at the beginning of a line
		# then reset the processing flag
		#
		/^Res Type name:/ { processing=0 }
		#
		# Get the resource name
		#
		/^  Res name:/ {
			if (processing) 
				rsname=$3
		}
		#
		# Get the resource type and print out the triplet
		#
		/^    Res resource type:/ {
			if (processing) {
				rstype=$4
				print rgname" "rsname" "rstype
			}
		}'
}

#
# Run scrgadm and grep out the string supplied
# The opts and strings variabled are set in the case statement below
#
run_cmd()
{
	/usr/cluster/bin/scrgadm -pvv ${opts} | grep "${string}"
}

#
# find the parameter specified by resource type and resource 
# property, if supplied
#
find_rg_info() 
{
type=$1
prop=$2

#
# read in the resource group triplet
#
get_rgs | while read rg rs rt
do
	if [ "$type" = "$rt" ]; then
		case $type in
		SUNW.nfs)
			opts="-g ${rg}"
			string="(${rg}) Res Group Pathprefix:"
			param=`run_cmd | awk '{print $5}'`
			echo ${rs}":"${param}
			;;	
		SUNW.iws)
			opts="-j ${rs}"
			string="(${rg}:${rs}:Confdir_list) Res property value"
			param=`run_cmd | awk '{print $5}'`
			echo ${rs}":"${param}
			;;
		SUNW.oracle_server)
			opts="-j ${rs}"
	
			[ -z "${prop}" ] && return 
			string="(${rg}:${rs}:${prop}) Res property value"
			run_cmd | awk '{print $5}'
			;;
		*)
			echo "Invalid option"
			exit 1
			;;
		esac
	fi
done
}
#include clust_rg_common

#
#  @(#)clust_pkgs.shf       1.1 01/01/10
#
# Cluster package checks
#
#
# Gather pkgchk information on all packages and
# copy simple configuration files into the data directories
#
clust_pkgs()
{
	IDUMP="cluster/packages"
	PKGFILE="${IDUMP}/PKGLIST"

	#
	# Check dataservices
	#
	SCDSPKGS="SUNWscdns SUNWschtt SUNWsclts SUNWscnew \
		SUNWscnsl SUNWscnsm SUNWsctiv"

	SCDBPKGS="SUNWscor SUNWscorx SUNWscsyb SUNWscinf SUNWscsap SUNWudlm"

	SC2PKGS="SUNWdid SUNWsccf SUNWscid SUNWccd SUNWff SUNWscch \
		SUNWmdm SUNWscins SUNWmond SUNWsclb SUNWcmm SUNWpnm SUNWsma \
		SUNWcsnmp SUNWsc SUNWsci SUNWscman SUNWscmgr SUNWscsdb \
		SUNWccon SUNWccp SUNWscds SUNWscpro"

	SC3PKGS="SUNWscfab SUNWscsal SUNWscshl SUNWscvm SUNWscman SUNWscsam \
		SUNWscssv SUNWscdev SUNWscr SUNWscscn SUNWscu"

	#
	# collect database pkg info
	#
	for PKG in ${SCDBPKGS}; do
		pkginfo -q ${PKG} >/dev/null 2>&1
	
		if [ $? -eq 0 ]; then
			echo_file ${PKGFILE} "Processed:	"${PKG}
			get_cmd "/usr/sbin/pkgchk -n ${PKG}" ${IDUMP}/pkgchk-n.${PKG}!

			#
			# Only keep files that received errors
			#
			if [ $? -eq 0 ]; then
				rm -f "${EXP_TARGET}/${IDUMP}/pkgchk-n.${PKG}"
			fi

			#
			# Create the dataservice dump directory
			#
			case ${PKG} in
				"SUNWscsyb")	DB="sybase";;
				"SUNWscor")	DB="oracle";;
				"SUNWscinf")	DB="informix";;
				"SUNWscsap")	DB="sap";;	
				"SUNWudlm")	DB="oracle";;
			esac
	
			DSDUMP="cluster/${DB}"

			#
			# OPS does not collect anything else here
			#
			if [ "${PKG}" = "SUNWudlm" ]; then 
				mkdir -p ${EXP_TARGET}/${DSDUMP} >/dev/null 2>&1
				continue
			fi

			#
			# XXX -- Sun Cluster 2.x specific
			#
			if [ ${CL_VERSION} -eq 2 -a "$cluststate" = "UP" ];then
				get_cmd "${CLUSTERBIN}/hareg -q ${DB}" \
					${DSDUMP}/hareg-q
			fi

			#
			# Gather the SAP start and stop scripts
			#
			if [ "${PKG}" = "SUNWscsap" ]; then
				HADSDIR=/etc/opt/${PKG}
				DSDUMP="cluster/etc/opt/${PKG}"
				
				get_file "${HADSDIR}/hadsconf" ${DSDUMP} || \
					touch_file ${DSDUMP}/hadsconf.NOTFOUND
					
				SAPDIR="${CLUSTER}/ha/sap"
				DSDUMP="cluster/opt/SUNWcluster/ha/sap"
				START=${SAPDIR}/hasap_start_all_instances
				STOP=${SAPDIR}/hasap_stop_all_instances

				get_file "${STOP}" ${DSDUMP} || \
					touch_file ${DSDUMP}/hasap_stop_all_instances.NOTFOUND
				get_file "${START}" ${DSDUMP} || \
					touch_file ${DSDUMP}/hasap_start_all_instances.NOTFOUND

				#	
				# Bypass the rest of the loop
				#
				continue
			fi

			#
			# Copy the database fault monitor 
			# configuration and log files
			#
			SRCDIR="/var/opt/${PKG}"
			DSDUMP="cluster/var/opt/${PKG}"

			get_dir recursive "${SRCDIR}" ${DSDUMP}

			#
			# Location of files have changed as of
			# Sun Cluster 3.x. The conditional check below
			# will do the right thing
			#
			if [ ${CL_VERSION} -eq 2 ];then
				SRCDIR="/etc/opt/${PKG}"
				DSDUMP="cluster/etc/opt/${PKG}"
	
				get_file "${SRCDIR}/ha${DB}_support" ${DSDUMP}
				get_file "${SRCDIR}/ha${DB}_config_V1" ${DSDUMP}
			elif [ ${CL_VERSION} -eq 3 ]; then
				for dir in oracle_server oracle_listener
				do
					SRCDIR="/opt/${PKG}/${dir}/etc"
					DSDUMP="cluster/opt/${PKG}/${dir}/etc"
	
					get_dir "${SRCDIR}" ${DSDUMP}
				done
			fi
		fi
	done

	#
	# collect other dataservice pkg info
	#
	for PKG in ${SCDSPKGS}; do
		pkginfo -q ${PKG} >/dev/null 2>&1
	
		if [ $? -eq 0 ]; then
			echo_file ${PKGFILE} "Processed:	"${PKG}
			get_cmd "/usr/sbin/pkgchk -n ${PKG}" ${IDUMP}/pkgchk-n.${PKG}!
			# Only keep files that received errors
			if [ $? -eq 0 ]; then
				rm -f "${EXP_TARGET}/${IDUMP}/pkgchk-n.${PKG}" 2>&1
			fi
			
			DSDUMP="cluster/etc/opt/${PKG}"
			#
			# Copy the configuration files for each package
			# XXX -- Sun Cluster 2.x specific
			#
			if [ ${CL_VERSION} -eq 2 ];then
				get_file "/etc/opt/${PKG}/hadsconf" ${DSDUMP}
			fi

			#
			# Create the dataservice dump directory
			#
			case ${PKG} in
				"SUNWscdns")	DS="dns";;
				"SUNWsclts")	DS="lotus";;
				"SUNWsctiv")	DS="tivoli";;
				"SUNWscnsl")	DS="nsldap";;
				"SUNWscnew")	DS="nsnews";;	
				"SUNWschtt")	DS="nshttp";;
				"SUNWscnsm")	DS="nsmail";;
				*)		continue;;
			esac

			DSDUMP="cluster/${DS}"
			if [ ${CL_VERSION} -eq 2 -a "$cluststate" = "UP" ];then
				get_cmd "${CLUSTERBIN}/hareg -q ${DS}" ${DSDUMP}/hareg-q
			elif [ ${CL_VERSION} -eq 3 ]; then
				get_dir "/opt/${PKG}/etc" "cluster/opt/${PKG}/etc"
			fi
		fi
	done

	#
	# Check base SC packages
	#
	if [ ${CL_VERSION} -eq 2 ];then
		for PKG in ${SC2PKGS}; do
			pkginfo -q ${PKG} >/dev/null 2>&1
			if [ $? -eq 0 ]; then
				echo_file ${PKGFILE} "Processed:	"${PKG}
				get_cmd "/usr/sbin/pkgchk -n ${PKG}" ${IDUMP}/pkgchk-n.${PKG}!
				# Only keep files that received errors
				if [ $? -eq 0 ]; then
					rm -f "${EXP_TARGET}/${IDUMP}/pkgchk-n.${PKG}" 2>&1
				fi
			fi
		done
	elif [ ${CL_VERSION} -eq 3 ];then
		for PKG in ${SC3PKGS}; do
			pkginfo -q ${PKG} >/dev/null 2>&1
			if [ $? -eq 0 ]; then
				echo_file ${PKGFILE} "Processed:	"${PKG}
				get_cmd "/usr/sbin/pkgchk -n ${PKG}" ${IDUMP}/pkgchk-n.${PKG}!
				# Only keep files that received errors
				if [ $? -eq 0 ]; then
					rm -f "${EXP_TARGET}/${IDUMP}/pkgchk-n.${PKG}" 2>&1
				fi
			fi
		done
	fi
}
#include clust_pkgs

#
#  @(#)clust_dtk.shf       1.1 01/01/10
#
# DTK collection script
#

clust_dtk()
{

	#
	# SunCluster 3.x specific
	#
	[ ${CL_VERSION} -ne 3 ] && return

	pkginfo -q SUNWscdtk
	[ $? -ne 0 ] && return


	[ "${cluststate}" = "DOWN" ] && return

	IDUMP="cluster/dtk"
	
	get_cmd "/usr/cluster/dtk/bin/cmm_ctl -g" ${IDUMP}/cmm_ctl-g
	get_cmd "/usr/cluster/dtk/bin/dcs_config -c info" ${IDUMP}/dcs_config-c_info
	get_cmd "/usr/cluster/dtk/bin/dcs_config -c status" ${IDUMP}/dcs_config-c_status
	#
	# XXX -- there appears to be a bug in adb that causes 
	# nodes to hang on Solaris 8. Need to investigate further
	# before adding this functionality. One potential fix is
	# to use mdb.
	#
	#get_cmd "/usr/cluster/dtk/bin/ddb /dev/ksyms /dev/mem" ${IDUMP}/ddb
	get_cmd "/usr/cluster/dtk/bin/orbadmin -P all" ${IDUMP}/orbadmin-P
	get_cmd "/usr/cluster/dtk/bin/orbadmin -R all" ${IDUMP}/orbadmin-R
	get_cmd "/usr/cluster/dtk/bin/print_net_state -s" ${IDUMP}/print_net_state-s
	get_cmd "/usr/cluster/dtk/bin/replctl" ${IDUMP}/replctl
#
# XXX -- Add for next release
#	get_cmd "/usr/cluster/lib/sc/reserve -c status" ${IDUMP}/reserve-c
#
	get_cmd "/usr/cluster/lib/sc/rgmd_debug printbuf" ${IDUMP}/rgmd_debug
}
#include clust_dtk

#
#  @(#)clust_config_data.shf       1.4 01/02/14
#
# Cluster specific data
#

#
# Verify the appropriate patch is installed prior to collecting pmf output
#
pmfadm_check()
{
scversion=$(egrep PRODVERS /var/sadm/pkg/SUNWsc/pkginfo | awk -F= '{print $2}')
installed_patch=$(egrep PATCHLIST /var/sadm/pkg/SUNWsc/pkginfo | awk -F= '{print $2}')

if [ -n "${scversion}" -a -n "${installed_patch}" ]; 
then
	#
	# The patches below fix bug# 4402834 which can cause rpc.pmfd to exit
	# abnormally and panic the system
	#
	case ${scversion} in
	"2.1")
		patchnum=105458
		patchrev=17
		;;
	"2.2")
		case $(uname -r) in 
		"5.6")
			patchnum=109208
			patchrev=08
			;;
		"5.7")
			patchnum=109209
			patchrev=08
			;;
		"5.8")
			patchnum=109210
			patchrev=07
			;;
		esac
		;;
	esac
	num=${installed_patch%%-*}
	rev=${installed_patch##*-}
	#
	# Only run the pmfadm command if the appropriate patch is installed
	#
	if [ ${num} -eq ${patchnum} -a ${rev} -ge ${patchrev} ];
	then
		get_cmd "${CLUSTERBIN}/pmfadm -l \"\"" cluster/config/pmfadm-l
	else
		# logfile "Patch ${patchnum}-${patchrev} is not installed. Skipping pmfadm -l collection"
		TEXT=`gettext "Patch %s-%s is not installed. Skipping pmfadm -l collection"`
		TEXT=`printf "${TEXT}" "${patchnum}" "${patchrev}"`
		logfile "${TEXT}"
	fi
fi
}


clust_config_data_2x() 
{
#
# To save time, only run certain commands when cluster node is running
#
if [ "`ps -e | grep clustd | wc -l | cut -c 8`" != "0" ]; then
	# logfile "Cluster is running on this node"
	TEXT=`gettext "Cluster is running on this node"`
	logfile "${TEXT}"
	cluststate="UP"

	get_cmd "${CLUSTERBIN}/get_node_status" cluster/config/
	get_cmd "${CLUSTERBIN}/clustm dumpstate ${CLUSTERNAME}" cluster/config/clustm-dumpstate
	pmfadm_check
	get_cmd "${CLUSTERBIN}/scconf ${CLUSTERNAME} -p" cluster/config/scconf-p
	get_cmd "${CLUSTERBIN}/hastat" cluster/config/
	get_cmd "${CLUSTERBIN}/hareg" cluster/config/
	get_cmd "${PNMBIN}/pnmstat -l" cluster/config/pnmstat-l
else
	cluststate="DOWN"
	# logfile "Cluster is NOT running on this node"
	TEXT=`gettext "Cluster is NOT running on this node"`
	logfile "${TEXT}"
fi

get_file "/etc/pnmconfig" cluster/etc
get_file "/.rhosts" cluster/config/rhosts!
get_file "${CLUSTERBIN}/init.snmpd" cluster/config


#
# XXX -- We use a loop instead of doing a recursive get_dir call
# The reason for this is that we need to execlude certain
# directories and we do this in the loop
#

# Get all files in /var/opt/SUNWcluster except the ${CLUSTERNAME} dir
for DIR in `find /var/opt/SUNWcluster -type d | grep -v ${CLUSTERNAME}`
do
	DSDUMP=`echo ${DIR} | sed -e 's/^\///'`

	# Don't get the devices directory, just list it
	if echo "${DIR}" | egrep -s -e "devices$"
	then
		get_cmd "/bin/ls -l ${DIR}" cluster/${DSDUMP}/
	else
		get_dir "${DIR}" cluster/${DSDUMP}
	fi
done

# Get all files in /etc/opt/SUNWcluster except nfs_probe_mountpoints
for DIR in `find /etc/opt/SUNWcluster -type d | \
	grep -v .nfs_probe_mountpoints`
do
	DSDUMP=`echo ${DIR} | sed -e 's/^\///'`
	get_dir "${DIR}" cluster/${DSDUMP}
done
	
}

clust_config_common()
{
#
# Cluster Private Interconnect info
#
pkginfo -q SUNWsci
if [ $? -eq 0 ]; then
	get_file "/etc/sci.ifconf" cluster/etc
	get_file "/etc/sma.config" cluster/etc
	get_file "/etc/sma.ip" cluster/etc
	
	#
	# Create data dump directory
	#
	DSDUMP="cluster/sci"

	get_cmd "${SCIBIN}/sciadm -ident" ${DSDUMP}/sciadm-ident
	get_cmd "${SCIBIN}/sciinfo -a" ${DSDUMP}/sciinfo-a
	
	#
	# XXX -- Sun Cluster 2.x specific
	#
	if [ ${CL_VERSION} -eq 2 ]; then
		get_cmd "${SMABIN}/get_ci_status" ${DSDUMP}/get_ci_status
		get_cmd "${SMABIN}/smactl -l" ${DSDUMP}/smactl-l
	fi

	for id in 0 1
	do
		get_cmd "${SCIDBIN}/scidstat -su ${id}" \
			${DSDUMP}/scidstat-su_${id}
	done
fi
}

clust_config_data_3x()
{
	get_cmd "${CLUSTERBIN}/scinstall -pv" cluster/config/scinstall-pv
	
	#
	# scconf will return 0 if node is in the cluster
	#
	get_cmd "${CLUSTERBIN}/scconf -pv" cluster/config/scconf-pv
	if [ $? -eq 0 ]; then
		cluststate="UP"
		get_cmd "${CLUSTERBIN}/pnmstat -lm" cluster/config/pnmstat-lm
		# Changed from pmfadm -l "" due to bug
		for handle in `${CLUSTERBIN}/pmfadm -L | awk -F: '{print $2}'`
		do
			get_cmd "${CLUSTERBIN}/pmfadm -l ${handle}" cluster/config/pmfadm-l.${handle}
		done
		get_cmd "${CLUSTERBIN}/scstat" cluster/config/scstat
		get_cmd "${CLUSTERBIN}/scstat -pv" cluster/config/scstat-pv
		get_cmd "${CLUSTERBIN}/scstat -pvv" cluster/config/scstat-pvv
		get_cmd "${CLUSTERBIN}/scconf -pvv" cluster/config/scconf-pvv
		get_cmd "${CLUSTERBIN}/scrgadm -pv" cluster/config/scrgadm-pv
		get_cmd "${CLUSTERBIN}/scrgadm -pvv" cluster/config/scrgadm-pvv
		get_cmd "${CLUSTERBIN}/sccheck -vh `uname -n`" cluster/config/sccheck-vh
	else
		cluststate="DOWN"
		# logfile "This node is currently not in the cluster"
		TEXT=`gettext "This node is currently not in the cluster"`
		logfile "${TEXT}"
		rm -f ${EXP_TARGET}/cluster/scconf-pv.*
	fi

	get_file "/etc/inet/ntp.conf" etc/inet
	get_dir recursive "/var/cluster" cluster/var/cluster
	get_dir recursive "/etc/cluster" cluster/etc/cluster
	return
}
	
clust_config_data ()
{
if [ ${CL_VERSION} -eq 2 ]; then
	clust_config_data_2x
else
	clust_config_data_3x
fi

clust_config_common
}

#include clust_config_data

#
#  @(#)clust_ds_haoracle.shf       1.1 01/01/10
#
# HA-ORACLE/OPS data
#

clust_ds_haoracle ()
{
	IDUMP="cluster/oracle"
	HAORADIR="/var/opt/oracle"

	#
	# Continue only if HA-ORACLE has been installed
	#
	[ ! -d "${EXP_TARGET}/${IDUMP}" ] && return

	#
	# collect /var/opt/oracle files
	#
	get_file "${HAORADIR}/oratab" cluster/var/opt/oracle || \
		touch_file cluster/var/opt/oracle/oratab.NOTFOUND

	get_file "${HAORADIR}/listener.ora" cluster/var/opt/oracle || \
		touch_file cluster/var/opt/oracle/listener.ora.NOTFOUND 

	get_file "${HAORADIR}/tnsnames.ora" cluster/var/opt/oracle || \
		touch_file cluster/var/opt/oracle/tnsnames.ora.NOTFOUND

	get_file "${HAORADIR}/sqlnet.ora" cluster/var/opt/oracle || \
		touch_file cluster/var/opt/oracle/sqlnet.ora.NOTFOUND

	#
	# XXX -- Only run if SunCluster version 2.x and cluster is up
	#
	[ ${CL_VERSION} -ne 2 ] && return

	if [ "$cluststate" = "UP" ]; then
		get_cmd "${CLUSTERBIN}/haoracle list" ${IDUMP}/haoracle_list
	fi
}
#include clust_ds_haoracle

#
#  @(#)clust_ds_hasybase.shf       1.1 01/01/10
#
# HA-SYBASE
#
clust_ds_hasybase ()
{
	HASYBDIR=/var/opt/sybase
	HASYBPKGNAME=SUNWscsyb
	IDUMP="cluster/sybase"

	#
	# Continue only if HA-SYBASE has been installed
	#
	[ ! -d "${EXP_TARGET}/${IDUMP}" ] && return

        #
        # Pick up files in /var/opt/sybase
        #
	get_file "${HASYBDIR}/sybtab" cluster/var/opt/sybase || \
		touch_file cluster/var/opt/sybase/sybtab.NOTFOUND

	get_file "${HASYBDIR}/interfaces" cluster/var/opt/sybase || \
		touch_file cluster/var/opt/sybase/interfaces.NOTFOUND

	#
	# XXX -- Only run on SunCluster 2.x and if cluster is up
	#
	[ ${CL_VERSION} -ne 2 ] && return

	if [ "$cluststate" = "UP" ];then
		get_cmd "${CLUSTERBIN}/hasybase list" ${IDUMP}/hasybase_list
	fi
}

#include clust_ds_hasybase

#
#  @(#)clust_ds_hainformix.shf       1.1 01/01/10
#
# HA-INFORMIX
#	- informix files specific for clustering
#
clust_ds_hainformix ()
{
	HAINFDIR="/var/opt/informix"
	HAINFPKGNAME=SUNWscinf
	IDUMP="cluster/informix"

	#
	# Continue only if the HA-INFORMIX has been installed
	#	- directory will exist if informix has been installed
	#
	[ ! -d "${EXP_TARGET}/${IDUMP}" ] && return

	#
	# collect /var/opt/informix
	#
	get_file "${HAINFDIR}/inftab" cluster/var/opt/informix || \
		touch_file cluster/var/opt/informix/inftab.NOTFOUND
	get_file "${HAINFDIR}/etc/sqlhosts" cluster/var/opt/informix/etc || \
		touch_file cluster/var/opt/informix/etc/sqlhosts.NOTFOUND

	if [ "$cluststate" = "UP" ];then
		get_cmd "${CLUSTERBIN}/hainformix list" ${IDUMP}/hainformix_list
	fi
}

#include clust_ds_hainformix

#
#  @(#)clust_ds_sap.shf       1.1 01/01/10
#
# HA-SAP
#
clust_ds_sap ()
{
	HADSDIR=/etc/opt
	HADSBINDIR=/opt/SUNWcluster/ha/sap
	HADSPKGNAME=SUNWscsap
	IDUMP="cluster/sap"
	
	#
	# XXX -- Only verified on SunCluster 2.x
	#	
	[ ${CL_VERSION} -ne 2 ] && return

	#
	# Continue only if HA-SAP has been installed
	#
	[ ! -d "${EXP_TARGET}/${IDUMP}" ] && return

	#
	# Get more info for each configured HA-SAP instance
	#
	if [ -f "${HADSDIR}/${HADSPKGNAME}/hadsconf" ]; then
		SAPSIDLIST=`/bin/grep YOUR_SAP_SID ${HADSDIR}/${HADSPKGNAME}/hadsconf | /bin/cut -d' ' -f 5`
	else
		SAPSIDLIST=
		touch_file ${IDUMP}/hadsconf.NOTFOUND
	fi

	for SAPSID in ${SAPSIDLIST}; do

		DSDUMP=${IDUMP}/${SAPSID}
		get_cmd "/bin/ps -ecf | /bin/grep ${SAPSID}" ${DSDUMP}/ps-ecf

		get_cmd "/usr/sap/${SAPSID}/SYS/exe/run/disp+work -V" \
			${DSDUMP}/disp+work-V || \
			touch_file ${DSDUMP}/disp+work-V.NOTFOUND

		get_dir recursive "/usr/sap/${SAPSID}/SYS/profile" \
			${DSDUMP}/profile || \
			touch_file ${DSDUMP}/profile.NOTFOUND 

		# there should only be one of these per SAPSID
		WORKDIR=`echo /usr/sap/${SAPSID}/DVEBMGS[0-9][0-9]/work`
		if [ -d "${WORKDIR}" ]; then
			get_file "${WORKDIR}/*.log"  ${DSDUMP}/work
			get_file "${WORKDIR}/*.trc"  ${DSDUMP}/work
			get_file "${WORKDIR}/dev*"   ${DSDUMP}/work
			get_file "${WORKDIR}/std*"   ${DSDUMP}/work
			get_file "${WORKDIR}/[A-Z]*" ${DSDUMP}/work
		else
			touch_file ${DSDUMP}/DVEBMGS-work.tar.NOTFOUND 
		fi
	done
}
#include clust_ds_sap

#
#  @(#)clust_ds_hanfs.shf       1.1 01/01/10
#
# HA NFS collection script
#

clust_ds_hanfs ()
{
	IDUMP="cluster/hanfs"
	HANFSPKGNAME=SUNWscnfs

	#
	# XXX -- Verified on SunCluster 3.x only
	#
	[ ${CL_VERSION} -ne 3 ] && return

	[ "${cluststate}" = "DOWN" ] && return

	#
	# Continue only if HA-NFS has been installed
	#
	pkginfo -q ${HANFSPKGNAME}
	[ $? -ne 0 ] && return

	#
	# For each NFS resource group: 
	#  - get the vfstab/dfstab
	#
	for line in `find_rg_info SUNW.nfs`
	do
		RSNAME=`echo $line | cut -d: -f 1`
		PATHPREFIX=`echo $line | cut -d: -f 2`

		FILE=${PATHPREFIX}/SUNW.nfs/dfstab.${RSNAME}
		get_file "${FILE}" ${IDUMP}/dfstab.${RSNAME}!
	done
}
#include clust_ds_hanfs

#
#  @(#)clust_ds_nshttp.shf       1.1 01/01/10
#
# Netscape HTTP collection script
#

clust_ds_nshttp ()
{
	IDUMP="cluster/nshttp"

	#
	# XXX -- Verified only on SunCluster 3.x
	# Continue only if HA-NSHTTP has been installed
	#
	[ ${CL_VERSION} -ne 3 ] && return

	[ "${cluststate}" = "DOWN" ] && return

	pkginfo -q SUNWschtt
	[ $? -ne 0 ] && return

	#
	# For each HTTP resource group: 
	#  - get the magnus.conf file
	#
	for line in `find_rg_info SUNW.iws`
	do
		RSNAME=`echo $line | cut -d: -f 1`
		CONFDIR=`echo $line | cut -d: -f 2`

		FILE=${CONFDIR}/config/magnus.conf
		get_file "${FILE}" ${IDUMP}/magnus.conf.${RSNAME}!
	done
}
#include clust_ds_nshttp

#
#  @(#)clust_sds_data.shf       1.1 01/01/10
#
# SDS cluster specific data
#
clust_sds_data ()
{
	IDUMP="cluster/sds"

	#
	# SunCluster 2.x specific
	#
	if [ ${CL_VERSION} -eq 2 ]; then
		pkginfo -q SUNWdid
		[ $? -ne 0 ] && return

		get_file /etc/did.conf cluster/etc > /dev/null 2>&1
	fi
			
	get_cmd "${CLUSTERBIN}/scdidadm -l" ${IDUMP}/scdidadm-l
	get_cmd "${CLUSTERBIN}/scdidadm -L" ${IDUMP}/scdidadm-L

	#
	# Get more SDS data
	#
	pkginfo -q SUNWmdm
	if [ $? -eq 0 ]; then

		pkginfo -q SUNWmd
		[ $? -ne 0 ] && return

		#
		# Disksuite changed paths in its version for 5.8
		#
		if [ "`uname -r`" = "5.8" ]; then
			SDSBIN=/usr/sbin
		else
			SDSBIN=/usr/opt/SUNWmd/sbin
		fi

		DS=`${SDSBIN}/metaset|grep 'Set name'|sed 's/Set name = //'|cut -d, -f 1`
		for s in ${DS}
		do
			get_cmd "${SDSBIN}/medstat -s ${s}" ${IDUMP}/medstat-s.${s}
		done

	fi

}
#include clust_sds_data

#
#  @(#)savefiles_1x.shf	1.1 01/01/10
#
#
# List of files/directories to save and exclude
#
savefiles_1x()
{
	get_file "/.rhosts" cluster/rhosts!
	get_file "/etc/pnmconfig" cluster/etc
	get_file "/etc/sci.ifconf" cluster/etc
	get_file "/etc/sma.ip" cluster/etc
	get_file "/etc/sma.config" cluster/etc

	get_dir recursive /var/opt/SUNWhadf cluster/var/opt/SUNWhadf
	get_dir recursive /var/opt/sybase cluster/var/opt/sybase
	get_dir recursive /var/opt/informix cluster/var/opt/informix

	# Exclude /etc/opt/SUNWhadf/nfs_probe_mountpoints
	for DIR in `find /etc/opt/SUNWhadf -type d | \
		grep -v nfs_probe_mountpoints`
	do
		DSDUMP=`echo ${DIR} | sed -e 's/^\///'`
		get_dir ${DIR} cluster/${DSDUMP}
	done

	# Exclude /var/opt/oracle/nlsdata
	for DIR in `find /var/opt/oracle -type d | grep -v nlsdata`
	do
		DSDUMP=`echo ${DIR} | sed -e 's/^\///'`
		get_dir ${DIR} cluster/${DSDUMP}
	done

}
#include savefiles_1x

database_data()
{
	oracle_collector
	informix_collector
	sybase_collector
}

#
# Collect data for Cluster Data Service data
#
clust_dataservice_data ()
{
	clust_ds_haoracle
	clust_ds_hasybase
	clust_ds_hainformix
	clust_ds_sap
	clust_ds_hanfs
	clust_ds_nshttp
}


#
# Collect cluster runtime configuration data
#
collect_cluster_data()
{
	echo "Starting collect_cluster_data at `date`"	>>${CLUSTERLOG} 2>&1

	#
	# Call clust_config_data first since it sets the global
	# cluststate flag which is used by other functions
	#
	clust_config_data

	clust_pkgs

	clust_dtk

	clust_dataservice_data

	clust_sds_data

	database_data

	echo "Finished collect_cluster_data at `date`"	>>${CLUSTERLOG} 2>&1

}


# =========== Start of script processing ======================================
#
# This script will be called from explorer, option will always be 'save'
#

TEXT=`gettext "Cluster software not installed"`
require "test -d /etc/opt/SUNWhadf -o -d /etc/opt/SUNWcluster -o -d /etc/cluster" "${TEXT}"

#
# Set basedir to the top directory. This
# allows for an easy change to the cluster tree
#
BASEDIR=${EXP_TARGET}/cluster

#
# if HA 1.x just collect some config files
#
if [  -d /etc/opt/SUNWhadf ]; then
	savefiles_1x
	exit 0
fi

SCIDBIN="/opt/SUNWscid/bin"
SCIBIN="/opt/SUNWsci/bin"
#
# if SC 2.x
#
pkginfo -q SUNWsc
if [ $? -eq 0 ]; then
	# logfile "Collecting Sun Cluster 2.x Configuration and Runtime info..."
	TEXT=`gettext "Collecting Sun Cluster 2.x Configuration and Runtime info..."`
	logfile "${TEXT}"

	CLUSTERNAME=`cat /etc/opt/SUNWcluster/conf/default_clustername`
	export CLUSTERNAME
	if [ -z "${CLUSTERNAME}" ]; then
		# logfile "Cannot locate default_clustername file, exiting script"
		TEXT=`gettext "Cannot locate default_clustername file, exiting script"`
		logfile "${TEXT}"
		exit 1
	fi

	CLUSTER=/opt/SUNWcluster
	CLUSTERBIN=${CLUSTER}/bin
	SMABIN=/opt/SUNWsma/bin
	PNMBIN="/opt/SUNWpnm/bin"

	CL_VERSION=2
fi

#
# if SC 3.x
#
pkginfo -q SUNWscr
if [ $? -eq 0 ]; then
	# logfile "Collecting Sun Cluster 2.x Configuration and Runtime info..."
	TEXT=`gettext "Collecting Sun Cluster 2.x Configuration and Runtime info..."`
	logfile "${TEXT}"

	CLUSTER=/usr/cluster
	CLUSTERBIN=${CLUSTER}/bin

	CL_VERSION=3
elif [ "${CL_VERSION}" -ne 2 ]; then 

	# logfile "Cannot locate SUNWsc package ... cluster collection skipped"
	TEXT=`gettext "Cannot locate SUNWsc package ... cluster collection skipped"`
	logfile "${TEXT}"
fi

collect_cluster_data
exit 0
 07070100034153000081a00000007000000064000000013aa567880000051d00000020000001f800000000000000000000001400000004reloc/tools/cmdline   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/cmdline#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# scoop up any extra commands or files specified on the command line
if [ -n "${EXP_EXTRA_FILES}" ]
then
    # logfile NOTNOISE "Collecting command line files"
    TEXT=`gettext "Collecting command line files"`
    logfile NOTNOISE "${TEXT}"
    for FILE in `echo ${EXP_EXTRA_FILES} | sed -e 's/,/ /g'`
    do
	get_file "${FILE}"
    done
fi

if [ -n "${EXP_EXTRA_CMDS}" ]
then
    # logfile NOTNOISE "Collecting command line commands"
    TEXT=`gettext "Collecting command line commands"`
    logfile NOTNOISE "${TEXT}"
    for EXE in `echo ${EXP_EXTRA_CMDS} | sed -e 's/,/ /g'`
    do
	# Translate %20 back to spaces
	COMMAND="`echo ${EXE} | sed -e 's/%20/ /g'`"

	# Do a quick check for full path to command
	echo "${COMMAND}" | egrep -s -e "^\/"
	if [ "$?" -ne 0 ]
	then
	    echo "${COMMAND}" | egrep -s -e " "
	    if [ "$?" -eq 0 ]
	    then
		CMD=`echo "${COMMAND}" | nawk '{ print $1 }'`
	    else
		CMD="${COMMAND}"
	    fi

	    # logfile ERROR "Please use the full path for command '${CMD}'"
	    TEXT=`gettext "Please use the full path for command '%s'"`
	    TEXT=`printf "${TEXT}" "${CMD}"`
	    logfile ERROR "${TEXT}"
	    continue
	fi

	get_cmd "${COMMAND}"
    done
fi
   07070100034154000081a00000007000000064000000013afafc2c0000015900000020000001f800000000000000000000001000000004reloc/tools/cst   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/cst#1 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

TEXT=`gettext "CST not installed"`
require "test -f /var/opt/SUNWcst/probe.current" "${TEXT}"

get_file "/var/opt/SUNWcst/probe.current" cst/
   07070100034155000081a00000007000000064000000013afb2dbe0000104f00000020000001f800000000000000000000001200000004reloc/tools/disks #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/disks#11 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

# Run format
get_cmd "/usr/bin/echo 0 | /usr/sbin/format 2>&1 | sed -e '/^Specify disk/,\$d'" disks/format

# Diskinfo is sparc only
if [ "${EXP_HOME}" = "/" ]
then
    DISKINFO="${EXP_LIB}/diskinfo"
else
    DISKINFO="${EXP_HOME}/bin/diskinfo.`uname -p`"
fi
if [ -f "${DISKINFO}" ]
then
    get_cmd "${DISKINFO}" disks/diskinfo!
fi

get_cmd "/usr/bin/ls -l /dev/rdsk"         disks/ls-l_dev_rdsk
get_cmd "/usr/bin/ls -l /dev/rmt*"         disks/ls-l_dev_rmt
get_cmd "/usr/bin/ls -l /dev/rst*"  ignore disks/ls-l_dev_rst
get_cmd "/usr/bin/ls -l /dev/nrst*" ignore disks/ls-l_dev_nrst

get_file /kernel/drv/st.conf disks
get_file /kernel/drv/sd.conf disks

get_cmd "/usr/bin/iostat -E" disks/
get_cmd "/usr/sbin/swap -l" disks/swap-l
get_cmd "/usr/sbin/swap -s" disks/swap-s

# gather major/minor numbers, which may be needed in following through
# crash dumps.
get_cmd "/usr/bin/find /dev -type d -print | xargs ls -lL" disks/dev-lL
get_cmd "/usr/bin/ls -lL /dev/*dsk/*" disks/maj_min_dev\#
get_cmd "/usr/bin/ls -ld /tmp"        disks/ls-ld_tmp
get_cmd "/usr/bin/df -k"              disks/df-k
get_cmd "/usr/bin/df -a"              disks/df-a
get_cmd "/usr/bin/df -e"              disks/df-e
get_cmd "/usr/bin/df -g"              disks/df-g

# gather disk partition information
for i in `/bin/ls /dev/rdsk/*s2`
do
    diskname=`echo $i|sed s/.dev.rdsk.//|sed s/s2//| sed s/\$/\&s/`

    # we need devinfo to find a non zero length partition, since prtvtoc
    # will return "No such device or address" on a zero length partition.
    # prtvtoc will be executed on one partition only as the info is the same
    # for all partitions.
    for k in 0 1 2 3 4 5 6 7
    do
        if test "`devinfo -p /dev/rdsk/$diskname$k 2>/dev/null`" != ""
	then
            get_cmd "/usr/sbin/prtvtoc /dev/rdsk/$diskname$k" disks/prtvtoc/$diskname$k!
            break
        fi
    done
done

#
#  Check for the E450 hw raid controller
#
if [ -x /opt/SUNWhwrdg/dptutil ]; then
    get_file "/var/opt/SUNWhwrdg/dptelog.*"        disks/hwraid
    get_cmd "/opt/SUNWhwrdg/dptutil -L all"        disks/hwraid/dptutil-L_all
    get_cmd "/opt/SUNWhwrdg/dptutil -L controller" disks/hwraid/dptutil-L_controller
    get_cmd "/opt/SUNWhwrdg/dptutil -L logical"    disks/hwraid/dptutil-L_logical
    get_cmd "/opt/SUNWhwrdg/dptutil -L physical"   disks/hwraid/dptutil-L_physical
    get_cmd "/opt/SUNWhwrdg/dptutil -L raid"       disks/hwraid/dptutil-L_raid
    get_cmd "/opt/SUNWhwrdg/dptutil -L spare"      disks/hwraid/dptutil-L_spare
fi

#
#  Get more info on disk arrays
#
if [ -d /dev/es ]; then
    for ES in `/bin/ls /dev/es`
    do
	get_cmd "/usr/sbin/luxadm inq /dev/es/${ES}" disks/luxadm_inq_dev_es_${ES}
    done
fi

get_cmd "/usr/sbin/luxadm probe"             disks/luxadm_probe
get_cmd "/usr/sbin/luxadm probe -p"          disks/luxadm_probe_-p
get_cmd "/usr/sbin/luxadm fcode_download -p" disks/luxadm_probe_fcode_download_-p

#
#  Check for II, FWC or RDC
#

# Instant Image
get_file /etc/opt/SUNWii/iitab disks/StorEdge
get_cmd "/usr/opt/SUNWesm/sbin/iiadm -i all" disks/StorEdge/iiadm-i_all

# Fast Write Cache
get_cmd "/usr/opt/SUNWesm/sbin/nvmadm -v" disks/StorEdge/nvmadm-v

# Network Data Replicator
get_file /etc/opt/SUNWrdc/rdc.cf disks/StorEdge

# Instant Image, Fast Write Cache, Network Data Replicator
get_file /etc/opt/SUNWscm/sd.cf disks/StorEdge
get_file /etc/opt/SUNWspsv/sv.cf disks/StorEdge
get_file /etc/opt/SUNWte/ste.cf disks/StorEdge
get_cmd "/usr/opt/SUNWesm/sbin/svadm" disks/StorEdge/svadm
get_cmd "/usr/opt/SUNWesm/sbin/scmadm" disks/StorEdge/scmadm
# Note: scmadm redirects STDOUT to STDERR, so err file contains the needed information

df -lFufs | sed -e "s/(/:/" -e "s/)/:/" | nawk -F: '{print $1,$2}' | while read fs dev
do
    bdev=`echo $dev | awk -F: '{ print $1 }' | sed 's/[\(\)]//g'`
    rdev=`echo $bdev | sed 's/dsk/rdsk/'`
    FS=`echo $fs | sed 's/\//_/g'`

    get_cmd "/usr/sbin/fstyp -v $bdev" disks/ufs/fstyp_-v=${FS}
done
 07070100034156000081a00000007000000064000000013afb2dbe0000014400000020000001f800000000000000000000001000000004reloc/tools/emc   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/emc#2 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

TEXT=`gettext "EMCpower not installed"`
require "pkginfo -q EMCpower" "${TEXT}"

get_cmd "powermt -display" emc/
07070100034157000081a00000007000000064000000013afafc300000058600000020000001f800000000000000000000001000000004reloc/tools/etc   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/etc#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

get_dir  /etc/default		 etc/default
get_file /etc/TIMEZONE		 etc
get_file /etc/auto_master	 etc
get_file /etc/hosts		 etc
get_file /etc/inetd.conf	 etc
get_file /etc/defaultdomain	 etc
get_file /etc/defaultrouter	 etc
get_file /etc/dfs/sharetab	 etc
get_file /etc/dfs/dfstab	 etc
get_file /etc/dumpadm.conf	 etc
get_file /etc/dumpdates  	 etc
get_file /etc/ethers		 etc
get_file /etc/mnttab		 etc
get_file /etc/name_to_major	 etc
get_file /etc/nsswitch.conf	 etc
get_file /etc/path_to_inst	 etc
get_file /etc/rpc		 etc
get_file /etc/release		 etc
get_file /etc/resolv.conf	 etc
get_file /etc/services		 etc
get_file /etc/system		 etc
get_file /etc/ssphostname	 etc
get_file /etc/vfstab		 etc
get_file /etc/nodename		 etc
get_file /etc/notrouter		 etc
get_file /etc/inittab		 etc
get_file /etc/syslog.conf	 etc
get_file /etc/bootparams	 etc
get_file /etc/shell              etc
get_file /etc/init.d/sysetup	 etc/init.d
get_file /etc/power.conf	 etc
get_file /etc/hostname.*	 etc
get_file /etc/hostname6.*	 etc
get_file /etc/inet/netmasks	 etc/inet
get_file /etc/inet/networks	 etc/inet
get_file /etc/inet/ndpd.conf     etc/inet
get_file /etc/inet/ipnodes       etc/inet
get_file /var/inet/ndpd_state.*  var/inet
  07070100034158000081a00000007000000064000000013afb2dbe0000013d00000020000001f800000000000000000000001000000004reloc/tools/fru   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/fru#9 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

TEXT=`gettext "FRUid not installed"`
require "pkginfo -q SUNWfruid" "${TEXT}"

get_cmd "/usr/sbin/prtfru -x" fru/
   07070100034159000081a00000007000000064000000013afafc330000016200000020000001f800000000000000000000001100000004reloc/tools/init  #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/init#4 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

get_dir /etc/rc0.d init/rc0.d
get_dir /etc/rc1.d init/rc1.d
get_dir /etc/rc2.d init/rc2.d
get_dir /etc/rc3.d init/rc3.d
get_dir /etc/rcS.d init/rcS.d
  0707010003415a000081a00000007000000064000000013afb2dbe000002de00000020000001f800000000000000000000001000000004reloc/tools/lic   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/lic#5 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit license $script default all

get_cmd  "/etc/fw/bin/fw printlic" license/fw.printlic
get_cmd  "/usr/sbin/vxlicense -p"  license/vxlicense-p
get_cmd  "/usr/sbin/vxserial -p"   license/vxserial-p
get_cmd  "/usr/sbin/vxfsserial -p" license/vxfsserial-p
get_file /var/tmp/license_log      license/workshop.license_log

if [ -r /etc/rc2.d/S85lmgrd ]
then
    licdir=`egrep  -e licdir=  /etc/rc2.d/S85lmgrd | cut -f2 -d=`
    licfile=`egrep -e licfile= /etc/rc2.d/S85lmgrd | cut -f2 -d=`

    get_cmd "$licdir/lmstat -a -c $licdir/$licfile" license/lmstat
fi
  0707010003415b000081a00000007000000064000000013afb2dbe000003c800000020000001f800000000000000000000000f00000004reloc/tools/lp    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/lp#6 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit printer $script default all

get_file /etc/printers.conf   lp
get_file /etc/lp/filter.table lp
get_file /etc/lp/Systems      lp

get_cmd "/usr/sbin/fnselect"                          lp/fnselect
get_cmd "/usr/bin/fnlist thisorgunit/service/printer" lp/fnlist
get_cmd "/usr/sbin/lpfilter -fall -l"                 lp/lpfilter-fall-l

# This command may run for large printer environments
# get_cmd "/usr/bin/lpstat -t"                          lp/lpstat-t

get_dir /etc/lp/printers lp

# This directory may be very large, don't collect by default
# get_dir /var/lp/logs lp

if [ -d "/etc/lp/interfaces" ]
then
    get_cmd "/usr/bin/ls -l /etc/lp/interfaces" lp/ls-l_interfaces
fi

if [ -d "/var/spool/print" ]
then
    get_cmd "/usr/bin/ls -l /var/spool/print" lp/ls-l_var_spool_print
fi
0707010003415c000081a00000007000000064000000013afafc370000030500000020000001f800000000000000000000001500000004reloc/tools/messages  #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/messages#5 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

SYSLOG=/etc/syslog.conf

get_file "/var/adm/messages*" messages
get_file "/var/log/syslog"    messages
get_cmd  "/usr/bin/dmesg"     messages/dmesg

#
#  Parse /etc/syslog.conf for other log files to grab
#
files=`/usr/ccs/bin/m4 ${SYSLOG} | \
    /usr/bin/nawk '$0 !~ /^#/ \
    && $NF !~ /\/dev/ && length \
    && $NF !~ /\*/{print $NF}' | \
    sed '/\/var\/adm\/messages/d' | \
    sed '/@/d' | \
    sort -u`

for f in $files
do
    if [ -r ${f} ]; then
	tmp=`dirname ${f} | sed -e 's~/~~' | sed -e 's~/~-~'`
	get_file "${f}" messages/logs/${tmp}
    fi
done
   0707010003415d000081a00000007000000064000000013afb2dbe000013be00000020000001f800000000000000000000001000000004reloc/tools/nbu   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/nbu#6 $

# Source tools functions
. ${EXP_HOME}/lib/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit backup $script default all

OPENVDIR="/usr/openv"

TEXT=`gettext "NetBackup not installed"`
require "test -d ${OPENVDIR} || test -h ${OPENVDIR}" "${TEXT}"

get_cmd "${OPENVDIR}/netbackup/bin/goodies/support"         nbu/cmd/support.txt!
get_cmd "${OPENVDIR}/netbackup/bin/goodies/available_media" nbu/cmd/available_media.txt!

for file in `${OPENVDIR}/netbackup/bin/goodies/check_coverage | /bin/grep /tmp | /bin/awk '{print $8}'`
do
    get_file "$file" nbu/cmd/
done

# get_license_key command is supported on NetBackup 3.4 or later version.
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/get_license_key -L features" nbu/cmd/get_license_key-L.features.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/get_license_key -L keys" nbu/cmd/get_license_key-L.keys.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bperror -U -backstat -s info -d 01/30/00 00:00:00" nbu/cmd/bperror-U-backstat-s_info.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bperror -U -problems -d 01/30/00 00:00:00" nbu/cmd/bperror-U-problem.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bperror -U -all -d 01/30/00 00:00:00" nbu/cmd/bperror-U-all.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bperror -U -media -d 01/30/00 00:00:00" nbu/cmd/bperror-U-media.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpcllist -allclasses -U" nbu/cmd/bpcllist-allclasses.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpclclients" nbu/cmd/bpclclients.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpmedialist -U -mlist" nbu/cmd/bpmedialist-U-mlist.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpmedialist -summary " nbu/cmd/bpmedialist-summary.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpmedialist -summary -brief" nbu/cmd/bpmedialist-summary-brief.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpimmedia -U" nbu/cmd/bpimmedia-U.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpimagelist -A -d 01/30/00 00:00:00 " nbu/cmd/bpimagelist-A.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpimagelist -A -media -d 01/30/00 00:00:00 " nbu/cmd/bpimagelist-A-media.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpconfig -U" nbu/cmd/bpconfig-U.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpsyncinfo -U" nbu/cmd/bpsyncinfo-U.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpgetconfig" nbu/cmd/bpgetconfig.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpdbjobs -report" nbu/cmd/bpdbjobs-report.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpdbjobs -summary" nbu/cmd/bpdbjobs-summary.txt!
get_cmd "${OPENVDIR}/netbackup/bin/admincmd/bpstulist -U -verbose" nbu/cmd/bpstulist-U-verbose.txt!
get_cmd "${OPENVDIR}/netbackup/bin/bpps -a" nbu/cmd/bpps-a.txt!
get_cmd "${OPENVDIR}/netbackup/bin/bpclimagelist" nbu/cmd/bpclimagelist.txt!
get_cmd "${OPENVDIR}/volmgr/bin/vmquery -a" nbu/cmd/vmquery-a.txt!
get_cmd "${OPENVDIR}/volmgr/bin/vmquery -a -bx" nbu/cmd/vmquery-a-bx.txt!
get_cmd "${OPENVDIR}/volmgr/bin/vmquery -a -w" nbu/cmd/vmquery-w.txt!
get_cmd "${OPENVDIR}/volmgr/bin/vmpool -listall" nbu/cmd/vmpool-listall.txt!
get_cmd "${OPENVDIR}/volmgr/bin/vmrule -listall" nbu/cmd/vmrule-listall.txt!
get_cmd "${OPENVDIR}/volmgr/bin/tpclean -L" nbu/cmd/tpclean-L.txt!

get_dir recursive "${OPENVDIR}/netbackup/logs" nbu/logs/
get_dir recursive "${OPENVDIR}/netbackup/db/class" nbu/db/class
get_dir recursive "${OPENVDIR}/netbackup/db/class_template" nbu/db/class_template/
get_dir recursive "${OPENVDIR}/netbackup/db/client" nbu/db/client/
get_dir recursive "${OPENVDIR}/netbackup/db/config" nbu/db/config/
get_dir recursive "${OPENVDIR}/netbackup/db/error" nbu/db/error/
get_dir recursive "${OPENVDIR}/netbackup/db/failure_history" nbu/db/failure_history/
get_dir recursive "${OPENVDIR}/netbackup/db/jobs" nbu/db/jobs/
get_dir recursive "${OPENVDIR}/netbackup/db/media" nbu/db/media/
get_dir recursive "${OPENVDIR}/volmgr/debug" nbu/volmgr/debug/
get_dir recursive "${OPENVDIR}/java/logs" nbu/java/logs/

get_file "${OPENVDIR}/netbackup/db/Class_att_defs" nbu/db/
get_file "${OPENVDIR}/netbackup/db/IDIRSTRUCT" nbu/db/
get_file "${OPENVDIR}/netbackup/db/INDEXLEVEL" nbu/db/
get_file "${OPENVDIR}/netbackup/db/bpenableLN.scr" nbu/db/
get_file "${OPENVDIR}/netbackup/db/bpenableTD.scr" nbu/db/
get_file "${OPENVDIR}/netbackup/db/images/*/INDEXLEVEL" nbu/db/images
get_file "${OPENVDIR}/java/JBPSimple.properties" nbu/java/
get_file "${OPENVDIR}/java/Launch.properties" nbu/java/
get_file "${OPENVDIR}/java/Xenv" nbu/java/
get_file "${OPENVDIR}/java/*conf" nbu/java/

get_file "${OPENVDIR}/netbackup/version" nbu/
get_file "${OPENVDIR}/netbackup/bin/version" nbu/bin/
get_file "${OPENVDIR}/netbackup/bin/*notify*" nbu/bin/
get_file "${OPENVDIR}/volmgr/version" nbu/volmgr/
get_file "${OPENVDIR}/volmgr/bin/driver/sg.conf*"  nbu/volmgr/bin/driver/
get_file "${OPENVDIR}/volmgr/bin/driver/sg.links*" nbu/volmgr/bin/driver/

# End of nbu script ###########################################
  0707010003415e000081a00000007000000064000000013afb2dbe00000f3700000020000001f800000000000000000000001000000004reloc/tools/ndd   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/ndd#9 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit network $script default all

MODS="ip tcp udp le hme ba qe qfe ge vge nf idn eri"
CARDS="le hme ba qe qfe ge vge nf idn eri"
SERVICE="ip tcp udp icmp"
OS=`uname -r`
MAXINSTANCE="0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15"

case $OS in
5.*)
    for mod in $SERVICE; do
	echo_file netinfo/ndd/$mod.out "Configuration service: $mod"
	echo_file netinfo/ndd/$mod.out "-------------------------"
	get_cmd "/usr/sbin/ndd /dev/$mod \?" netinfo/ndd/$mod/?

	/usr/sbin/ndd /dev/$mod \? | while read line ; do
	    parm=`echo "$line" | nawk -F'(' '{print $1}' | sed 's/ //g'`
	    rest=`echo "$line" | nawk -F'(' '{print $2}'`
	    [ "$parm" = '?' ] && continue

	    # Only get info on vars that include "read"
	    echo "$rest" | egrep -s -e "read"
	    if [ "$?" != 0 ]; then
		echo_file netinfo/ndd/$mod.out "$line"
		echo_file netinfo/ndd/$mod.out ""
		continue
	    fi

	    # Catch vars that have no read or write access
	    echo "$line" | egrep -s -e "\(no "
	    if [ "$?" = 0 ]; then
		echo_file netinfo/ndd/$mod.out "$line"
		echo_file netinfo/ndd/$mod.out ""
		continue
	    fi

	    echo_file netinfo/ndd/$mod.out "$line"
	    get_cmd "/usr/sbin/ndd /dev/$mod $parm" netinfo/ndd/$mod/$parm
	    cat ${EXP_TARGET}/netinfo/ndd/$mod/$parm.out | echo_file netinfo/ndd/$mod.out
	done
    done
    for mod in $CARDS; do
	/usr/sbin/ndd -set /dev/$mod instance 0 2>&1 | egrep -s -e "couldn't push"
	[ "$?" = 0 ] && continue

	for inst in $MAXINSTANCE; do
	    /usr/sbin/ndd -set /dev/$mod instance $inst 2>&1 | egrep -s -e "operation failed"
	    [ "$?" = 0 ] && continue
	    echo_file netinfo/ndd/$mod.out "Card Configuration: $mod instance: $inst"
	    echo_file netinfo/ndd/$mod.out "-----------------------------------------"
	    get_cmd "/usr/sbin/ndd /dev/$mod \?" netinfo/ndd/$mod.$inst/?

	    /usr/sbin/ndd /dev/$mod \? | while read line ; do
		parm=`echo "$line" | nawk -F'(' '{print $1}' | sed 's/ //g'`
		rest=`echo "$line" | nawk -F'(' '{print $2}'`
		[ "$parm" = '?' ] && continue

		# Only get info on vars that include "read"
		echo "$rest" | egrep -s -e "read"
		if [ "$?" != 0 ]; then
		    echo_file netinfo/ndd/$mod.out "$line"
		    echo_file netinfo/ndd/$mod.out ""
		    continue
		fi

		# Catch vars that have no read or write access
		echo "$line" | egrep -s -e "\(no "
		if [ "$?" = 0 ]; then
		    echo_file netinfo/ndd/$mod.out "$line"
		    echo_file netinfo/ndd/$mod.out ""
		    continue
		fi

		echo_file netinfo/ndd/$mod.out "$line"
		get_cmd "/usr/sbin/ndd /dev/$mod $parm" netinfo/ndd/$mod.$inst/$parm
		cat ${EXP_TARGET}/netinfo/ndd/$mod.$inst/$parm.out | echo_file netinfo/ndd/$mod.out
	    done
	done 
    done 
    ;;
*)
    for mod in $MODS; do
	echo_file netinfo/ndd/$mod.out "Driver configuration: $mod"
 	echo_file netinfo/ndd/$mod.out "-------------------------"

	get_cmd "/usr/sbin/ndd /dev/$mod \?" netinfo/ndd/$mod/?

	/usr/sbin/ndd /dev/$mod \? | while read line ; do
	    parm=`echo "$line" | nawk -F'(' '{print $1}' | sed 's/ //g'`
	    rest=`echo "$line" | nawk -F'(' '{print $2}'`
	    [ "$parm" = '?' ] && continue

	    # Only get info on vars that include "read"
	    echo "$rest" | egrep -s -e "read"
	    if [ "$?" != 0 ]; then
		echo_file netinfo/ndd/$mod.out "$line"
		echo_file netinfo/ndd/$mod.out ""
		continue
	    fi

	    # Catch vars that have no read or write access
	    echo "$line" | egrep -s -e "\(no "
	    if [ "$?" = 0 ]; then
		echo_file netinfo/ndd/$mod.out "$line"
		echo_file netinfo/ndd/$mod.out ""
		continue
	    fi

	    echo_file netinfo/ndd/$mod.out "$line"
	    get_cmd "/usr/sbin/ndd /dev/$mod $parm" netinfo/ndd/$mod/$parm
	    cat ${EXP_TARGET}/netinfo/ndd/$mod/$parm.out | echo_file netinfo/ndd/$mod.out
	done
    done
    ;;
esac
 0707010003415f000081a00000007000000064000000013afb2dbe0000060a00000020000001f800000000000000000000001400000004reloc/tools/netinfo   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/netinfo#6 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit network $script default all

get_cmd "/usr/sbin/arp -a"       netinfo/arp-a
get_cmd "/usr/bin/netstat -rvan" netinfo/netstat-rvan
get_cmd "/usr/bin/netstat -an"   netinfo/netstat-an
get_cmd "/usr/bin/netstat -pn"   netinfo/netstat-pn
get_cmd "/usr/bin/netstat -rn"   netinfo/netstat-rn
get_cmd "/usr/bin/netstat -i"    netinfo/netstat-i
get_cmd "/usr/bin/netstat -m"    netinfo/netstat-m
get_cmd "/usr/bin/netstat -s"    netinfo/netstat-s
get_cmd "/usr/bin/kstat -p"      netinfo/kstat-p
get_cmd "/usr/bin/nfsstat"       netinfo/nfsstat
get_cmd "/usr/bin/rpcinfo"       netinfo/rpcinfo
get_cmd "/usr/bin/rpcinfo -m"    netinfo/rpcinfo-m

# Get DNS config
get_file /etc/named.conf netinfo

# Check FireWall-1 version
get_cmd "/etc/fw/bin/fw ver" netinfo/firewall-1_fw_ver

# Check for NIS+
NIS=`ls -l /var/nis/* 2>/dev/null | wc -l`
if [ ${NIS} -gt 0 ]
then
    domain=`domainname`
    get_cmd "/usr/bin/nisdefaults"              netinfo/
    get_cmd "/usr/lib/nis/nisshowcache -v"      netinfo/nisshowcache-v
    get_cmd "/usr/bin/niscat -o $domain"        netinfo/niscat-o_$domain
    get_cmd "/usr/lib/nis/nisping -u org_dir"   netinfo/nisping-u
    get_cmd "/usr/lib/nisstat"                  netinfo/nisstat
    get_cmd "/usr/bin/nisls -lR"                netinfo/nisls-lR
    get_cmd "/usr/bin/niscat -o passwd.org_dir" netinfo/niscat-o_passwd.org_dir
fi
  07070100034160000081a00000007000000064000000013afafc3c0000027700000020000001f800000000000000000000001200000004reloc/tools/patch #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/patch#5 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

get_cmd "/usr/bin/showrev"    patch+pkg/showrev
get_cmd "/usr/bin/showrev -p" patch+pkg/showrev-p
get_cmd "/usr/sbin/modinfo"   patch+pkg/modinfo
get_cmd "/usr/bin/showrev -p | egrep -e '^Patch' | nawk '{print \$2}' | sort" patch+pkg/patch-list!

if [ -d /var/sadm/patch ]
then
    get_cmd "/usr/bin/ls -l     /var/sadm/patch" patch+pkg/patch_date
    get_cmd "/usr/bin/ls -almtr /var/sadm/patch" patch+pkg/patch_listing!
fi

 07070100034161000081a00000007000000064000000013afb2dbe0000077800000020000001f800000000000000000000001300000004reloc/tools/photon    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/photon#7 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

# Test for existance of photon
#
TEXT=`gettext "No photons installed"`
require "test -d /dev/es" "${TEXT}"
TEXT=`gettext "Luxadm not installed"`
require "test -x /usr/sbin/luxadm" "${TEXT}"
cnt=`/usr/sbin/luxadm probe | egrep -e "No Network Array enclosures found" | wc -l`
TEXT=`gettext "No photons installed"`
require 'test "$cnt" -eq 0' "${TEXT}"

# List all photons connected to the system
get_cmd "/usr/sbin/luxadm probe"    disks/photon/luxadm_probe
get_cmd "/usr/sbin/luxadm probe -p" disks/photon/luxadm_probe-p
get_cmd "/usr/bin/ls -l /dev/es"    disks/photon/ls-l_dev.es!

# get info for each photon using boxname. However, for compatibility
# with explorer pre 3.0 release, create a ses link to each boxname dir.
# This is why we are grabing boxname and Logical path for each photon.

BOX_DIR=disks/photon/boxnames

for i in `/usr/sbin/luxadm probe | nawk '/SENA/,/Logical/' | nawk '{print $2}'`
do
    if [ "Name" = `echo $i|sed s/:.*//` ]
    then
        # Get the photon name
	BOXNAME=`echo $i|sed s/Name://`

	# run all of the luxadm commands
        get_cmd "/usr/sbin/luxadm display $BOXNAME"     $BOX_DIR/$BOXNAME/luxadm_display
        sleep 1
        get_cmd "/usr/sbin/luxadm -v display $BOXNAME"  $BOX_DIR/$BOXNAME/luxadm-v_display
        sleep 1
        get_cmd "/usr/sbin/luxadm display -r $BOXNAME"  $BOX_DIR/$BOXNAME/luxadm_display-r
        sleep 1
        get_cmd "/usr/sbin/luxadm -e dump_map $BOXNAME" $BOX_DIR/$BOXNAME/luxadm_-e_dump_map
    else
	# for compatibility with explorer pre 3.0 release create links
	# into the BOXNAME dirs so older tools don't break.
        SES=`echo $i|sed s/Path:.dev.es.//`
	symlink disks/photon boxnames/$BOXNAME $SES
    fi
done
07070100034162000081a00000007000000064000000013afafc3e0000038d00000020000001f800000000000000000000001000000004reloc/tools/pkg   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/pkg#5 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

echo_file patch+pkg/pkginfo-l.out "Long pkg Listing"
echo_file patch+pkg/pkginfo-l.out "================"
echo_file patch+pkg/pkginfo-l.out ""
get_cmd "/usr/bin/pkginfo -l" patch+pkg/pkginfo-l

echo_file patch+pkg/pkginfo-p.out "Partialy Installed pkgs"
echo_file patch+pkg/pkginfo-p.out "======================="
echo_file patch+pkg/pkginfo-p.out ""
get_cmd "/usr/bin/pkginfo -p" patch+pkg/pkginfo-p

echo_file patch+pkg/pkginfo-i.out "Fully Installed pkgs"
echo_file patch+pkg/pkginfo-i.out "===================="
echo_file patch+pkg/pkginfo-i.out ""
get_cmd "/usr/bin/pkginfo -i" patch+pkg/pkginfo-i

if [ -d /var/sadm/pkg ]
then
    get_cmd "/usr/bin/ls -almtr /var/sadm/pkg" patch+pkg/pkg_listing!
fi
   07070100034163000081a00000007000000064000000013afb2dbe0000059300000020000001f800000000000000000000001000000004reloc/tools/sbu   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/sbu#7 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit backup $script default all

# Make sure SBU is available
TEXT=`gettext "Solstice Backup not installed"`
require "test -d /usr/sbin/nsr" "${TEXT}"

get_cmd "/usr/sbin/nsr/mminfo -av" sbu/mminfo-av
get_cmd "/usr/sbin/nsr/mminfo -aV" sbu/mminfo-aV
get_cmd "/usr/sbin/nsr/nsrls"      sbu/nsrls
# This command can potentially take a long time to run and
# consume a lot of CPU
# get_cmd "/etc/LGTOuscsi/inquire" sbu/inquire

get_cmd "/bin/ls -alF  /nsr/index" sbu/index/clients_l
get_cmd "/bin/ls -alLF /nsr/index" sbu/index/clients_L
# get_dir /nsr/index sbu/index/clients

# The following nsrinfo command produces a massive amount of information.
# Use only after a warning to the customer that significant CPU load may occur.
# get_cmd "/usr/sbin/nsr/nsrinfo -V -s `hostname` `hostname`" sbu/nsrinfo.V

get_file /nsr/res/nsr.res   sbu/nsr/nsr.res
get_file /nsr/res/nsrjb.res sbu/nsr/nsrjb.res

get_file /nsr/logs/messages   sbu/logs/messages
get_file /nsr/logs/daemon.log sbu/logs/daemon.log
get_file /nsr/logs/summary    sbu/logs/summary

get_cmd "/bin/ls -alF /usr/sbin/nsr" sbu/sbin/nsr
get_cmd "/bin/ls -alF /usr/bin/nsr"  sbu/bin/nsr
get_cmd "/bin/ls -alF  /dev/rmt"     sbu/rmt/devices
get_cmd "/bin/ls -alLF /dev/rmt"     sbu/rmt/devices_L
 07070100034164000081a00000007000000064000000013b009b7a0000154b00000020000001f800000000000000000000001700000004reloc/tools/scextended    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/scextended#26 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit extended interactive $script default all

# defaults
SC_NAME="NOTNOISE"
SC_TIME=60
TTY=`tty`
if [ "${TTY}" = "not a tty" ]
then
    TTY=""
fi

collect_data () {
    # Use small default time for first command to ensure this is an SC
    OPT="telnet:sc:${SC_NAME}:${SC_PASS}:5"
    get_cmd "showsc -v" ${OPT} sc/${SC_NAME}/

    # Make sure root password correct
    if egrep -s -e "Invalid password" ${EXP_TARGET}/sc/${SC_NAME}/showsc_-v.out
    then
	rm -rf ${EXP_TARGET}/sc/${SC_NAME}
	TEXT=`gettext "root password for %s is incorrect"`
	TEXT=`printf "${TEXT}" "${SC_NAME}"`
	logfile ERROR "${TEXT}"
	return
    fi

    # Make sure we are talking to an SC
    if ! egrep -s -e "Platform Shell" ${EXP_TARGET}/sc/${SC_NAME}/showsc_-v.out
    then
	rm -rf ${EXP_TARGET}/sc/${SC_NAME}
	TEXT=`gettext "%s is not a System Controller"`
	TEXT=`printf "${TEXT}" "${SC_NAME}"`
	logfile ERROR "${TEXT}"
	return
    fi

    OPT="telnet:sc:${SC_NAME}:${SC_PASS}:${SC_TIME}"
    get_cmd "showplatform -v"         ${OPT} sc/${SC_NAME}/
    get_cmd "showplatform -d a"       ${OPT} sc/${SC_NAME}/
    get_cmd "showplatform -d b"       ${OPT} sc/${SC_NAME}/
    get_cmd "showplatform -d c"       ${OPT} sc/${SC_NAME}/
    get_cmd "showplatform -d d"       ${OPT} sc/${SC_NAME}/
    get_cmd "showdate -v"             ${OPT} sc/${SC_NAME}/
    get_cmd "showdate -v -d a"        ${OPT} sc/${SC_NAME}/
    get_cmd "showdate -v -d b"        ${OPT} sc/${SC_NAME}/
    get_cmd "showdate -v -d c"        ${OPT} sc/${SC_NAME}/
    get_cmd "showdate -v -d d"        ${OPT} sc/${SC_NAME}/
    get_cmd "showlogs -v"             ${OPT} sc/${SC_NAME}/
    get_cmd "showlogs -v -d a"        ${OPT} sc/${SC_NAME}/
    get_cmd "showlogs -v -d b"        ${OPT} sc/${SC_NAME}/
    get_cmd "showlogs -v -d c"        ${OPT} sc/${SC_NAME}/
    get_cmd "showlogs -v -d d"        ${OPT} sc/${SC_NAME}/

    # Increase timeout
    OPT="telnet:sc:${SC_NAME}:${SC_PASS}:300"
    get_cmd "showboards -p proms"     ${OPT} sc/${SC_NAME}/
    get_cmd "showboards -v -p memory" ${OPT} sc/${SC_NAME}/
    get_cmd "showboards -v"           ${OPT} sc/${SC_NAME}/
    get_cmd "showboards -e"           ${OPT} sc/${SC_NAME}/
    get_cmd "showenvironment -tv"     ${OPT} sc/${SC_NAME}/
    get_cmd "showboards -p cpu"       ${OPT} sc/${SC_NAME}/

    # Get a list of boards from showboards -e
    if [ ! -f "${EXP_TARGET}/sc/${SC_NAME}/showboards_-e.out" ]
    then
	TEXT=`gettext "Unable to parse showboards for %s"`
	TEXT=`printf "${TEXT}" "${SC_NAME}"`
	logfile ERROR "${TEXT}"
	return
    fi

    # Parse showboards -e
    while read line
    do
	BOARD=`echo $line | nawk '{ print $1 }'`

	# Check to see if board is On
	if echo $line | egrep -s -e On
	then
	    echo "${BOARD}" >> ${EXP_TMPDIR}/brd.${EXP_PID}
	fi
    done < "${EXP_TARGET}/sc/${SC_NAME}/showboards_-e.out"

    OPT="telnet:sc:${SC_NAME}:${SC_PASS}:${SC_TIME}"
    # Get component data for boards that were on
    if [ -f "${EXP_TMPDIR}/brd.${EXP_PID}" ]
    then
	for BOARD in `cat ${EXP_TMPDIR}/brd.${EXP_PID}`
	do
	    get_cmd "showcomponent ${BOARD}" ${OPT} sc/${SC_NAME}/
	done
	rm -f ${EXP_TMPDIR}/brd.${EXP_PID}
    fi
}

# Interactive?
RUN=""
which_gate interactive && RUN=notempty
which_gate scextended  && RUN=notempty
which_gate extended    && RUN=notempty

if [ -n "${RUN}" ]
then
    logfile "Collecting extended data interactively"

    TEXT=`gettext "\nYou will be prompted for a System Controller name\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"`
    prompt "${TEXT}"
    prompt ""

    while [ -n "${SC_NAME}" ]
    do
	TEXT=`gettext "Please enter the name of the SC: "`
	prompt "${TEXT}\c"
	read SC_NAME

	if [ -n "${SC_NAME}" ]
	then
	    # Can we ping it?
	    TEXT=`gettext "Verifying connection to %s"`
	    TEXT=`printf "${TEXT}" "${SC_NAME}"`
	    logfile "${TEXT}"
	    ping ${SC_NAME} >/dev/null 2>&1
	    if [ "$?" -ne 0 ]
	    then
		TEXT=`gettext "Unable to connect to ${SC_NAME}"`
		TEXT=`printf "${TEXT}" "${SC_NAME}"`
		logfile ERROR "${TEXT}"
		prompt ""
		return
	    fi

	    # Get password
	    TEXT=`gettext "Please enter the root password for %s: "`
	    TEXT=`printf "${TEXT}" "${SC_NAME}"`
	    prompt "${TEXT}\c"
	    [ -n "${TTY}" ] && stty -echo
	    read SC_PASS
	    [ -n "${TTY}" ] && stty echo
	    prompt ""

	    collect_data
	    prompt ""
	fi
    done
fi

# Not interactive, input file?
if [ -f "${EXP_HOME}/etc/scinput.txt" ]
then
    # Make sure input file is mode 0600
    if `ls -l ${EXP_HOME}/etc/scinput.txt | nawk '{ print $1 }' | egrep -s -e '------$'`
    then
	logfile "Collecting extended data from ${EXP_HOME}/etc/scinput.txt file"
	while read line
	do
	    # Skip comments and blank lines
	    echo $line | sed -e 's/^ *//' -e 's/ *$//' | egrep -s -e '^#' && continue
	    echo $line | egrep -s -e '^$' && continue

	    SC_NAME=`echo $line | nawk '{ print $1 }'`
	    SC_PASS=`echo $line | nawk '{ print $2 }'`

	    if [ -d "${EXP_TARGET}/sc/${SC_NAME}" ]
	    then
		logfile "Data for ${SC_NAME} already collected"
	    else
		logfile "Collecting extended data for ${SC_NAME}"
		collect_data
	    fi
	done < ${EXP_HOME}/etc/scinput.txt
    else
	logfile WARNING "${EXP_HOME}/etc/scinput.txt file not correct mode"
    fi
fi
 07070100034165000081a00000007000000064000000013afb2dbe0000061b00000020000001f800000000000000000000001000000004reloc/tools/sds   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/sds#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

# Determine what version we're running based on
# the location of the metastat binary.
if [ -x /usr/opt/SUNWmd/sbin/metastat ]
then
   # running pre-4.2.1 version
   SDSPATH=/usr/opt/SUNWmd/sbin
else
   # running 4.2.1 or above
   SDSPATH=/usr/sbin
fi

# If SDS is not present don't run these tests.
TEXT=`gettext "SDS not installed"`
require "test -x \"${SDSPATH}/metastat\"" "${TEXT}"

# get local, i.e. non-disk set info.
get_cmd "${SDSPATH}/metastat"    disks/sds/metastat
get_cmd "${SDSPATH}/metastat -p" disks/sds/metastat-p
get_cmd "${SDSPATH}/metadb"      disks/sds/metadb

# The first test makes sure we have metaset executable (SDS pre 4.0
# does not have a disk set option); The second test checks for the
# existence of disk sets, if no disk sets exist, exit.
if  [ ! -x ${SDSPATH}/metaset ] || [ "`${SDSPATH}/metaset 2>/dev/null`" = "" ]
then
    exit 0
fi

# run the test for each disk set found.
for diskset in `${SDSPATH}/metaset 2>/dev/null | egrep -e "Set name" | awk '{print $4}' | sed s/,.*//`
do
    metaparam="-s"$diskset
    get_cmd "${SDSPATH}/metastat $metaparam"    disks/sds/metastat.$diskset
    get_cmd "${SDSPATH}/metastat $metaparam -p" disks/sds/metastat-p.$diskset
    get_cmd "${SDSPATH}/metadb  $metaparam"     disks/sds/metadb.$diskset
    get_cmd "${SDSPATH}/metaset $metaparam"     disks/sds/metaset.$diskset
done
 07070100034166000081a00000007000000064000000013afb2dbf0000054800000020000001f800000000000000000000001800000004reloc/tools/sf15000-ndd   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/sf15000-ndd#7 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit starcat sf15000 $script default all

SERVICE="scman dman"

for mod in $SERVICE; do
    # Don't attempt if device isn't readable
    [ ! -r "/dev/$mod" ] && continue

    get_cmd "/usr/sbin/ndd /dev/$mod \?" sf15000/ndd/$mod/?
    echo_file sf15000/ndd/$mod.out "Configuration service: $mod"
    echo_file sf15000/ndd/$mod.out "-------------------------"

    /usr/sbin/ndd /dev/$mod \? | while read line ; do
	parm=`echo "$line" | nawk -F'(' '{print $1}' | sed 's/ //g'`
	rest=`echo "$line" | nawk -F'(' '{print $2}'`
	[ "$parm" = '?' ] && continue

	# Only get info on vars that include "read"
	echo "$rest" | egrep -s -e "read"
	if [ "$?" != 0 ]; then
	    echo_file sf15000/ndd/$mod.out "$line"
	    echo_file sf15000/ndd/$mod.out ""
	    continue
	fi

	# Catch vars that have no read or write access
	echo "$line" | egrep -s -e "\(no "
	if [ "$?" = 0 ]; then
	    echo_file sf15000/ndd/$mod.out "$line"
	    echo_file sf15000/ndd/$mod.out ""
	    continue
	fi

	echo_file sf15000/ndd/$mod.out "$line"
	get_cmd "/usr/sbin/ndd /dev/$mod $parm" sf15000/ndd/$mod/$parm
	cat ${EXP_TARGET}/sf15000/ndd/$mod/$parm.out | echo_file sf15000/ndd/$mod.out
    done
done
07070100034167000081a00000007000000064000000013b01aee500000d9a00000020000001f800000000000000000000001700000004reloc/tools/sf15000-sc    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/sf15000-sc#10 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit starcat sf15000 $script default all

# Require the root SMS package before attempting collection
TEXT=`gettext "SMS not installed"`
require "pkginfo -q SUNWSMSr" "${TEXT}"

# General information files and directories
get_dir  "/var/opt/SUNWSMS/.pcd"                    sf15000/pcd/
get_file "/var/opt/SUNWSMS/adm/.logger"             sf15000/adm/logger!
get_file "/var/opt/SUNWSMS/adm/mess*"               sf15000/adm/
get_file "/var/sadm/system/logs/smsbackup"          sf15000/logs/
get_dir  "/var/opt/SUNWSMS/adm/platform/dump"       sf15000/adm/platform/dump/
get_dir  recursive "/var/opt/SUNWSMS/adm/anonymous" sf15000/adm/anonymous/
get_dir  recursive "/etc/opt/SUNWSMS/SMS"           sf15000/etc/

# Basic commands
get_cmd "/opt/SUNWSMS/bin/showdate -v"     user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showboards -v"   user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showenvironment" user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showfailover"    user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showfailover -r" user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showfailover -v" user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showbus"         user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showbus -v"      user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showcmdsync"     user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showcmdsync -v"  user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showdatasync -l" user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showdatasync -v" user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/marginclock"     user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/marginvoltage"   user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showplatform"    user=sms-svc sf15000/
get_cmd "/opt/SUNWSMS/bin/showplatform -v" user=sms-svc sf15000/

# Get thermcal data
for brd in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
do
    # Boards are CS[0-1] and EX[0-17]
    case ${brd} in
        0|1)
	    get_cmd "/opt/SUNWSMS/bin/thermcal -r CS${brd}" user=sms-svc sf15000/
	    get_cmd "/opt/SUNWSMS/bin/thermcal -r EX${brd}" user=sms-svc sf15000/
	    ;;
	*)
	    get_cmd "/opt/SUNWSMS/bin/thermcal -r EX${brd}" user=sms-svc sf15000/
	    ;;
    esac
done

# Get revisions on lpost elf files
for OBJ in /opt/SUNWSMS/hostobjs/*.elf
do
    MOD=`basename ${OBJ}`
    get_cmd "/usr/ccs/bin/mcs -p ${OBJ} | grep ${MOD}" sf15000/hostobjs/${MOD}!
done

# Domain information
for DOMAIN in A B C D E F G H I J K L M N O P Q R
do
    # Make sure we have a domain configured
    [ ! -f "/var/opt/SUNWSMS/data/${DOMAIN}/nvramdata" ] && continue

    # Domain information
    get_dir recursive "/var/opt/SUNWSMS/adm/${DOMAIN}" sf15000/${DOMAIN}/adm/
    get_dir "/var/opt/SUNWSMS/data/${DOMAIN}"          sf15000/${DOMAIN}/data/
    get_dir "/var/opt/SUNWSMS/.lock/${DOMAIN}"         sf15000/${DOMAIN}/lock/

    # Domain commands
    get_cmd "/opt/SUNWSMS/bin/showdate -v -d ${DOMAIN}"    user=sms-svc sf15000/${DOMAIN}/
    get_cmd "/opt/SUNWSMS/bin/showdevices -v -d ${DOMAIN}" user=sms-svc sf15000/${DOMAIN}/
    get_cmd "/opt/SUNWSMS/bin/showobpparams -d ${DOMAIN}"  user=sms-svc sf15000/${DOMAIN}/
    get_cmd "/opt/SUNWSMS/bin/showkeyswitch -d ${DOMAIN}"  user=sms-svc sf15000/${DOMAIN}/
    get_cmd "/opt/SUNWSMS/bin/showxirstate -d ${DOMAIN}"   user=sms-svc sf15000/${DOMAIN}/
done
  07070100034168000081a00000007000000064000000013afb2dbf0000082c00000020000001f800000000000000000000001300000004reloc/tools/sonoma    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/sonoma#10 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

TEXT=`gettext "No A3X00 installed"`
require "test -d /usr/sbin/osa" "${TEXT}"

# add to path: /usr/sbin/osa
OSABIN=/usr/sbin/osa

get_file /usr/lib/osa/rmparams                disks/sonoma/usr_lib_osa
get_file /usr/lib/osa/rmlog.*                 disks/sonoma/usr_lib_osa
get_file /usr/lib/osa/rdac_address            disks/sonoma/usr_lib_osa
get_file /etc/osa/mnf                         disks/sonoma/etc_osa
get_file /kernel/drv/sd.conf                  disks/sonoma/kernel_drv
get_file /kernel/drv/rdnexus.conf             disks/sonoma/kernel_drv
get_file /kernel/drv/rdriver.conf             disks/sonoma/kernel_drv
get_cmd  "/usr/bin/ls -l /dev/osa/dev/dsk/*"  disks/sonoma/ls-l_dev.osa.dev.dsk!
get_cmd  "/usr/bin/ls -l /dev/osa/dev/rdsk/*" disks/sonoma/ls-l_dev.osa.dev.rdsk!

# healthck -a - perform health check on all RAID modules
get_cmd "${OSABIN}/healthck -a" disks/sonoma/healthck-a

# lad - lists the names of all array devices connected to the system
get_cmd "${OSABIN}/lad" disks/sonoma/lad

#
# Previously used complicated method use output of healthck
# Switch to lad so as to run the commands even if healthck is failing
#
for i in `${OSABIN}/lad | sed -e '/No RAID/d' | nawk '{print $1}'`
do
    get_cmd "${OSABIN}/drivutil -d '$i'"      disks/sonoma/drivutil-d/$i
    get_cmd "${OSABIN}/drivutil -i '$i'"      disks/sonoma/drivutil-i/$i
    get_cmd "${OSABIN}/drivutil -I '$i'"      disks/sonoma/drivutil-I/$i
    get_cmd "${OSABIN}/drivutil -l '$i'"      disks/sonoma/drivutil-l/$i
    get_cmd "${OSABIN}/rdacutil -i '$i'"      disks/sonoma/rdacutil-i/$i

    get_cmd "${OSABIN}/raidutil -c '$i' -i"   disks/sonoma/raidutil-i/$i!
    get_cmd "${OSABIN}/raidutil -c '$i' -V 0" disks/sonoma/raidutil-V/$i!
    get_cmd "${OSABIN}/raidutil -c '$i' -B"   disks/sonoma/raidutil-B/$i!
    get_cmd "${OSABIN}/nvutil -v   '$i'"      disks/sonoma/nvutil-v/$i
done
07070100034169000081a00000007000000064000000013afb2dbf0000050100000020000001f800000000000000000000001000000004reloc/tools/ssa   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/ssa#7 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

# Get luxadm or ssaadm command PATH
if [ -x /usr/sbin/luxadm ]
then
    SSAADM=/usr/sbin/luxadm
else
    SSAADM=`which ssaadm`
fi

export SSAADM

# check for the existence of ssa devices in /dev/rdsk, and pull the
# cNtNdN numbers
# NOTE: that this doesn't mean that an SSA is currently installed on
#       that device. To be sure, I can pull this info from format, but
#	I am concerned that if format gets stuck for some reasone, then
#	the whole script will get stck too. This can be fixed when I
#	process the data. At that point I will match the info from
#	format agianst the disks in here.
LIST=`ls -l /dev/rdsk/ | egrep -e "/SUNW,pln" | egrep -e "s0" | nawk '{ print $9 }' | sed s/t.\*// | sort -u`
TEXT=`gettext "No SSAs installed"`
require "test -n \"${LIST}\"" "${TEXT}"

for SSA in ${LIST}
do
    get_cmd "$SSAADM -v display ${SSA}" disks/ssa/ssaadm."${SSA}"

    for diskpath in `ls /dev/rdsk/"${SSA}"t*s0`
    do
        diskname=`echo $diskpath | sed s/.dev.rdsk.//`
	get_cmd "$SSAADM display $diskpath" disks/ssa/${SSA}.disk_list/$diskname
    done
done
   0707010003416a000081a00000007000000064000000013afb2dbf000015cc00000020000001f800000000000000000000001000000004reloc/tools/ssp   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/ssp#10 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit starfire $script default all

TEXT=`gettext "Not an SSP system"`
require "test -d /var/opt/SUNWssp" "${TEXT}"

# set env for System Service Processor, so root can run the command sys_id -d etc.
SSPBIN=/opt/SUNWssp/bin
PATH=$PATH:${SSPBIN}
SSPETC=/etc/opt/SUNWssp
SSPOPT=/opt/SUNWssp
SSPVAR=/var/opt/SUNWssp
LD_LIBRARY_PATH=/opt/SUNWssp/lib:/usr/openwin/lib:/usr/lib
TCL_LIBRARY=/opt/SUNWssp/library/tcl
TK_LIBRARY=/opt/SUNWssp/library/tk
SCOTTY_LIBRARY=/opt/SUNWssp/library/scotty
TCLLIBPATH="/opt/SUNWssp/library/tcl /opt/SUNWssp/library/tk /opt/SUNWssp/library/scotty"
export PATH SSPETC SSPOPT SSPVAR LD_LIBRARY_PATH SUNW_HOSTNAME
export TCL_LIBRARY TK_LIBRARY SCOTTY_LIBRARY TCLLIBPATH

SSP_PRIVATE=${SSPVAR}/.ssp_private
SUNW_HOSTNAME=`cut -d: -f1 ${SSP_PRIVATE}/cb_config`
INITTAB=${INITTAB:-/etc/inittab}

get_file "${SSPVAR}/ssp_backup.out"         ssp
get_file "${SSPVAR}/ssp_restore.out"        ssp
get_file "${SSPVAR}/ds_backup.out"          ssp
get_file "${SSPVAR}/ds_restore.out"         ssp
get_file "$SSP_PRIVATE/cb_config"           ssp
get_file "$SSP_PRIVATE/domain_config"       ssp
get_file "$SSP_PRIVATE/ssp_resource"        ssp
get_file "$SSP_PRIVATE/ssp_to_domain_hosts" ssp
get_file "$SSP_PRIVATE/main_ssp_name"       ssp

get_dir  recursive ${SSPVAR}/adm            ssp/SUNWssp-adm
get_dir  recursive ${SSPVAR}/etc            ssp/SUNWssp-etc
get_dir  recursive ${SSPVAR}/data           ssp/SUNWssp-data
get_cmd  "${SSPBIN}/domain_status"          ssp/domain_status
get_cmd  "${SSPBIN}/showfailover"           ssp/

#
#  Check if we are on the main or spare ssp
#    Check domain_status first, then look in inittab (pre-3.1.1) or 
#    check for S99ssp (3.1.1) because S99ssp might be called something else
#
domain_status 2>&1 | egrep -s -e "domain_status: This command must run on the main SSP."
if [ "$?" = 1 ]; then
    SSP_STATION=main
elif egrep -s -e "^sp:234:respawn:.*ssp_startup.sh" $INITTAB
then
    SSP_STATION=main
elif [ -r /etc/rc2.d/S99ssp ]
then
    SSP_STATION=main
else
    SSP_STATION=spare
fi

# if we are on the main run the following
if [ "${SSP_STATION}" = "main" ]
then
    PLATFORM=`nawk -F: '{print $1}' $SSP_PRIVATE/cb_config`

    # Get long listing of /tftpboot
    get_cmd "/usr/bin/ls -lia /tftpboot" ssp/ls-lia_tftpboot

    # get platform config/tuning data (blacklist)
    get_dir "$SSPVAR/etc/$PLATFORM" ssp/etc/${PLATFORM}

    # now get platform configuration/status info
    get_cmd "${SSPBIN}/fan"         ssp/fan
    get_cmd "${SSPBIN}/power"       ssp/power
    get_cmd "${SSPBIN}/sys_clock"   ssp/sys_clock

    get_cmd "${SSPBIN}/hostinfo -F" ssp/hostinfo/hostinfo-F
    get_cmd "${SSPBIN}/hostinfo -S" ssp/hostinfo/hostinfo-S
    get_cmd "${SSPBIN}/hostinfo -h" ssp/hostinfo/hostinfo-h
    get_cmd "${SSPBIN}/hostinfo -p" ssp/hostinfo/hostinfo-p
    get_cmd "${SSPBIN}/hostinfo -t" ssp/hostinfo/hostinfo-t

    # new get system board && i/o module details from the platform
    for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    do
	get_cmd "${SSPBIN}/board_id -b io -n $i" ssp/board_id/board_id-bio_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b mem -n $i" ssp/board_id/board_id-bmem_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b sb -n $i" ssp/board_id/board_id-bsb_$i
	sleep 10

	# For compatibility, put all command output in summary files
	echo_file  ssp/board_id/board_id-bio.out "i/o board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bio_$i.out | echo_file ssp/board_id/board_id-bio.out

	echo_file  ssp/board_id/board_id-bmem.out "memory board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bmem_$i.out | echo_file ssp/board_id/board_id-bmem.out

	echo_file  ssp/board_id/board_id-bsb.out "system board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bsb_$i.out | echo_file ssp/board_id/board_id-bsb.out

    done

    # new get some control board details from the platform
    for i in 0 1
    do
	get_cmd "${SSPBIN}/board_id -b cb -n $i" ssp/board_id/board_id-bcb_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b csb -n $i" ssp/board_id/board_id-bcsb_$i
	sleep 10

	get_cmd "${SSPBIN}/board_id -b cp -n $i" ssp/board_id/board_id-bcp_$i
	sleep 10

	# For compatibility, put all command output in summary files
	echo_file  ssp/board_id/board_id-bcb.out "control board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bcb_$i.out | echo_file ssp/board_id/board_id-bcb.out

	echo_file  ssp/board_id/board_id-bcsb.out "centerplane support board ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bcsb_$i.out | echo_file ssp/board_id/board_id-bcsb.out

	echo_file  ssp/board_id/board_id-bcp.out "centerplane ${i}\n"
	cat ${EXP_TARGET}/ssp/board_id/board_id-bcp_$i.out | echo_file ssp/board_id/board_id-bcp.out
    done

    # get the prom info for each cb
    for i in `nawk -F: '{print $3" "$5}' $SSP_PRIVATE/cb_config`
    do
	echo_file  ssp/cb_prom-r.out "\nControl Board ${i}"
	get_cmd "${SSPBIN}/cb_prom -r -h $i" ssp/cb_prom-r
    done

    # Get domain data
    for i in `nawk -F: '{print $1}' $SSP_PRIVATE/domain_config`
    do
	SUNW_HOSTNAME=$i
	export SUNW_HOSTNAME

	# Do sys_id -d
	get_cmd "${SSPBIN}/sys_id -d" "ssp/sys_id-d.domain/${SUNW_HOSTNAME}"

	# Get domain config/tuning data (postrc)
	get_dir "${SSPVAR}/etc/${PLATFORM}/${SUNW_HOSTNAME}" "ssp/etc/${SUNW_HOSTNAME}"

	# Do check_host
	echo_file  ssp/check_host.out "\nDomain ${SUNW_HOSTNAME}"
	get_cmd "${SSPBIN}/check_host" ssp/check_host
    done
fi
 
0707010003416b000081a00000007000000064000000013afb2dbf0000019300000020000001f800000000000000000000001600000004reloc/tools/stortools #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/stortools#7 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage st3 $script default all

TEXT=`gettext "StorTools not installed"`
require "pkginfo -q STORtools" "${TEXT}"

# Get StorTools 3.x log files
get_file "/var/opt/STORtools/logs/Golden_Snapshot*" disks/stortools/
 0707010003416c000081a00000007000000064000000013afafc510000194700000020000001f800000000000000000000001600000004reloc/tools/sysconfig #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/sysconfig#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

# Get system information
get_cmd "/usr/sbin/sysdef"           sysconfig/sysdef
get_cmd "/usr/sbin/sysdef -d"        sysconfig/sysdef-d
get_cmd "/usr/sbin/prtconf -v"       sysconfig/prtconf-v
get_cmd "/usr/sbin/prtconf -vp"      sysconfig/prtconf-vp
get_cmd "/usr/bin/uptime"            sysconfig/uptime
get_cmd "/usr/sbin/psrinfo -v"       sysconfig/psrinfo-v
get_cmd "/usr/sbin/ifconfig -a"      sysconfig/ifconfig-a
get_cmd "/usr/sbin/eeprom"           sysconfig/eeprom
get_cmd "/usr/bin/ipcs -a"           sysconfig/ipcs-a
get_cmd "/usr/bin/ps -ef"            sysconfig/ps-ef
get_cmd "/usr/bin/ps -acefl"         sysconfig/ps-acefl
get_cmd "/usr/bin/last -100"         sysconfig/last-100-login
get_cmd "/usr/bin/last -20 reboot"   sysconfig/last-20-reboot
get_cmd "/usr/bin/uname -a"          sysconfig/uname-a
get_cmd "/bin/ls -lR /kernel/drv"    sysconfig/ls-lR_kernel_drv
get_cmd "/usr/sbin/dumpadm"          sysconfig/dumpadm
get_cmd "/usr/bin/isainfo"           sysconfig/isainfo
get_cmd "/usr/bin/isainfo -kv"       sysconfig/isainfo-kv
get_cmd "/usr/bin/coreadm"           sysconfig/coreadm
get_cmd "/usr/sbin/lockstat sleep 5" sysconfig/lockstat-sleep-5
get_cmd "/usr/proc/bin/ptree root"   sysconfig/ptree-root
get_cmd "/usr/bin/priocntl -l"       sysconfig/priocntl-l
get_cmd "/opt/SUNWut/sbin/utadm -p"  sysconfig/utadm-p

# Collect kernel config files
get_file "/kernel/drv/*.conf" sysconfig/drv

# NEW
get_cmd "/usr/bin/vmstat 3 3" sysconfig/

# kernel msgbuf of the currently running system
echo '$<msgbuf' | get_cmd "/usr/bin/adb -k /dev/ksyms /dev/mem" sysconfig/kernel-msgbuf

# nm on /dev/ksyms for values listed in /etc/system
cat /etc/system | egrep -e "^set" | sed 's/set //' | sed 's/ //g' | cut -d= -f1 | cut -d: -f2 |
while read mod
do
    get_cmd "/usr/ccs/bin/nm /dev/ksyms | egrep -e $mod" sysconfig/nm.ksyms=$mod
done

# Don't execute prtconf -V if it returns error, i.e. illegal option.
# -V option works only on Solaris 2.5 and higher. It reports OBP rev level.
if [ -z "`prtconf -V 2>&1 | egrep -e 'illegal option'`" ]
then
    get_cmd "/usr/sbin/prtconf -V" sysconfig/prtconf-V
fi

# Don't execute uname -X if it returns error, i.e. illegal option.
# -X option works only on Solaris 2.6 and higher.
if [ -z "`uname -X 2>&1 | egrep -e 'illegal option'`" ]
then
    get_cmd "/usr/bin/uname -X" sysconfig/uname-X
fi

# Get prtdiag info if it exists, also there has been a change to
# where prtdiag is located in Solaris 2.5 and later.
#
# SUNW - is for Sun HW
# CYRS - is for Cray HW
#
# Update to use machine hardware name (class) from uname -m
#
ARCH=`uname -m`
SYSNAME="`prtconf | egrep -e '^SUNW,'`"

if [ -z "$SYSNAME" ]
then
    SYSNAME="`prtconf | egrep -e '^CYRS,'`"
fi

# /platform exist only on Solaris 2.5 and above, for 2.3&2.4 use /kernel
if [ -d /platform ]
then
    # kernel is generally not under SYSNAME but under ARCH
    # get_cmd "/bin/ls -l /platform/"$SYSNAME"/kernel" sysconfig/kernel_ls-l
    get_cmd "/bin/ls -l /platform/${ARCH}/kernel" sysconfig/kernel_ls-l
elif [ -d /kernel ]
then
    get_cmd "/bin/ls -l /kernel" sysconfig/kernel_ls-l
fi

if [ -x "/usr/platform/${ARCH}/sbin/prtdiag" ]
then
    get_cmd "/usr/platform/${ARCH}/sbin/prtdiag -v" sysconfig/prtdiag-v
elif [ -x /usr/kvm/prtdiag ]
then
    get_cmd "/usr/kvm/prtdiag -v" sysconfig/prtdiag-v
fi

# Run core check script
get_cmd "${EXP_HOME}/bin/core_check.sh" sysconfig/crash/core_check

# check for dumpadm and set appropriate CRASHDIR
if [ -x /usr/sbin/dumpadm ]
then
    CRASHDIR=`dumpadm | egrep -e "Savecore directory" | awk -F: '{print $2}' | sed 's/ //g'`
else
    TEMPDIR=`egrep -e savecore /etc/init.d/sysetup | sed -e '/^ *#/d' -e 's/^ *savecore //g'`
    CRASHDIR=`eval echo ${TEMPDIR}`
fi

# Make sure CRASHDIR isn't empty
if [ -z "${CRASHDIR}" ]
then
    CRASHDIR=/var/crash/`uname -n`
fi

# List CRASHDIR, in case it's a link
DIR=`echo ${CRASHDIR} | sed -e 's/\//_/g'`
get_cmd "/bin/ls -al ${CRASHDIR}" sysconfig/crash/ls-al${DIR}

if [ -d "${CRASHDIR}" ]
then
    # See if we can find out which core file is the last crash
    if [ -f "${CRASHDIR}/bounds" ]
    then
	NEXT=`cat ${CRASHDIR}/bounds`
	LAST=`expr ${NEXT} - 1`
    else
	FILE=`ls ${CRASHDIR}/vmcore.* 2>/dev/null | sort -rn | head -1`
	LAST=`basename ${FILE} | sed 's/vmcore.//'`
    fi

    # Check all cores
    LIST=`ls ${CRASHDIR}/vmcore.* 2>/dev/null`
    for core in ${LIST}
    do
	file=`basename $core`
	get_cmd "/usr/bin/strings $core | head" sysconfig/crash/strings-$file
    done

    # Check for ACT crash dump analysis
    get_file "${CRASHDIR}/act.*" sysconfig/crash/act

    # Check for ACT, and get analysis of last crash
    if [ -x /opt/CTEact/bin/act -a -f ${CRASHDIR}/vmcore.${LAST} -a -f ${CRASHDIR}/unix.${LAST} ]
    then
	get_cmd "/opt/CTEact/bin/act -d ${CRASHDIR}/vmcore.${LAST} -n ${CRASHDIR}/unix.${LAST}" \
	    sysconfig/crash/act/act-d_vmcore.${LAST}
    elif [ -x /opt/CETactx/bin/act -a -f ${CRASHDIR}/vmcore.${LAST} -a -f ${CRASHDIR}/unix.${LAST} ]
    then
	get_cmd "/opt/CTEactx/bin/act -d ${CRASHDIR}/vmcore.${LAST} -n ${CRASHDIR}/unix.${LAST}" \
	    sysconfig/crash/act/act-d_vmcore.${LAST}
    fi
fi

# Run crash interactively
get_cmd "/usr/sbin/crash" sysconfig/crash/crash <<END
status
proc
kmastat
pty
quit
END

# pty doesn't run on Solaris 8, so use mdb
get_cmd "/usr/bin/mdb -k" sysconfig/crash/mdb_-k <<END
::walk pty_map | ::ptms
END

# exec dispadmin to list the dispatch tables
get_cmd "/usr/sbin/dispadmin -l" sysconfig/dispadmin-l

# obtain the dispatch table for class names
CLASSES=`/usr/sbin/dispadmin -l | nawk '$1 ~ /^[A-Z]+$/ && $2 ~ /^\(/ { print $1 }'`
export CLASSES

# for each class found ...
for CLASS in ${CLASSES}
do
	# get the class' dispatch table
	get_cmd "/usr/sbin/dispadmin -c ${CLASS} -g" sysconfig/dispadmin-c_${CLASS}
done

# AP info, exit if no SUNWapu package
TEXT=`gettext "AP not installed"`
require "pkginfo -q SUNWapu" "${TEXT}"
get_cmd "/usr/sbin/apconfig -D"    sysconfig/ap/apconfig-D
get_cmd "/usr/sbin/apconfig -N"    sysconfig/ap/apconfig-N
get_cmd "/usr/sbin/apconfig -N -u" sysconfig/ap/apconfig-N-u
get_cmd "/usr/sbin/apconfig -S"    sysconfig/ap/apconfig-S
get_cmd "/usr/sbin/apconfig -S -u" sysconfig/ap/apconfig-S-u
get_cmd "/usr/sbin/apinst"         sysconfig/ap/apinst
 0707010003416d000081a00000007000000064000000013afb2dbf000004fa00000020000001f800000000000000000000000f00000004reloc/tools/t3    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/t3#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

CFILE=/tmp/cfile.$$

#
#  Function to create format command file
#
mkCfile () {
    # Create the format commands file
    cat >${CFILE} <<-EOF
scsi
inquiry
quit
quit
EOF
}

# Create format cfile
mkCfile

#
# Go through the list of disks via format
# and look for label SUN-T3
#
echo 0 | /usr/sbin/format 2>&1 | sed -e '/^Specify disk/,$d' |
while read line
do
    echo $line | egrep -s -e SUN-T3
    if [ $? = 0 ]; then
        LUN=`echo $line | awk '{ print $2 }'`

	# Expert SCSI inquiry
	get_cmd "/usr/sbin/format -e -f ${CFILE} -d ${LUN} 2>&1 | \
	    sed -n -e '/^Inquiry:/,/^scsi>/p' | \
	    sed    -e '/^scsi> quit/d'" \
	    disks/t3/${LUN}.scsiinfo
    fi
done

for i in `/usr/sbin/luxadm probe | nawk '/^  Node/,/Logical/' | nawk '{print $2}'`
do
    if [ "WWN" = `echo $i|sed s/:.*//` ]
    then
	LUN=`echo $i | sed 's/Name://'`

	# Luxadm
	get_cmd "/usr/sbin/luxadm display ${LUN}"     disks/t3/luxadm_display_${LUN}
	sleep 1
	get_cmd "/usr/sbin/luxadm -e dump_map ${LUN}" disks/t3/luxadm_-e_dump_map_${LUN}
    fi
done

# Remove cfile
rm -f ${CFILE}
  0707010003416e000081a00000007000000064000000013b009b7a00001c5100000020000001f800000000000000000000001700000004reloc/tools/t3extended    #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/t3extended#24 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage extended interactive $script default all

# defaults
T3_NAME="NOTNOISE"
T3_TIME=60
TTY=`tty`
if [ "${TTY}" = "not a tty" ]
then
    TTY=""
fi

if [ "${EXP_HOME}" = "/" ]
then
    CLIENT="${EXP_LIB}/t3client"
    TFILE="${EXP_LIB}/t3files.txt"
else
    CLIENT="${EXP_HOME}/bin/t3client.`uname -p`"
    TFILE="${EXP_HOME}/etc/t3files.txt"
fi

collect_data () {
    # Execute commands in T3_CMDS, use small timeout to ensure this is a T3
    OPT="telnet:t3:${T3_NAME}:${T3_PASS}:5"
    get_cmd "ls -l /"           ${OPT} disks/t3/${T3_NAME}/

    # Make sure root password correct
    if egrep -s -e "Invalid password" ${EXP_TARGET}/disks/t3/${T3_NAME}/ls_-l_@.out
    then
	rm -rf ${EXP_TARGET}/disks/t3/${T3_NAME}
	TEXT=`gettext "root password for %s is incorrect"`
	TEXT=`printf "${TEXT}" "${T3_NAME}"`
	logfile ERROR "${TEXT}"
	return
    fi

    # Make sure we are talking to a T3
    if ! egrep -s -e "pSOSystem" ${EXP_TARGET}/disks/t3/${T3_NAME}/ls_-l_@.out
    then
	rm -rf ${EXP_TARGET}/disks/t3/${T3_NAME}
	TEXT=`gettext "%s is not a StorEdge T3"`
	TEXT=`printf "${TEXT}" "${T3_NAME}"`
	logfile ERROR "${TEXT}"
	return
    fi

    OPT="telnet:t3:${T3_NAME}:${T3_PASS}:${T3_TIME}"
    get_cmd "ls -l /etc"        ${OPT} disks/t3/${T3_NAME}/
    get_cmd "ls -l /web"        ${OPT} disks/t3/${T3_NAME}/
    get_cmd "ls -l /web/snmp"   ${OPT} disks/t3/${T3_NAME}/
    get_cmd "proc list"         ${OPT} disks/t3/${T3_NAME}/
    get_cmd "fru s sys"         ${OPT} disks/t3/${T3_NAME}/
    get_cmd "sys stat"          ${OPT} disks/t3/${T3_NAME}/
    get_cmd "sys list"          ${OPT} disks/t3/${T3_NAME}/
    get_cmd "vol stat"          ${OPT} disks/t3/${T3_NAME}/
    get_cmd "vol statp"         ${OPT} disks/t3/${T3_NAME}/
    get_cmd "vol list"          ${OPT} disks/t3/${T3_NAME}/
    get_cmd "vol mode"          ${OPT} disks/t3/${T3_NAME}/
    get_cmd "fru l"             ${OPT} disks/t3/${T3_NAME}/
    get_cmd "fru st"            ${OPT} disks/t3/${T3_NAME}/
    get_cmd "fru myuid"         ${OPT} disks/t3/${T3_NAME}/
    get_cmd "date"              ${OPT} disks/t3/${T3_NAME}/
    get_cmd "tzset"             ${OPT} disks/t3/${T3_NAME}/
    get_cmd "port list"         ${OPT} disks/t3/${T3_NAME}/
    get_cmd "port listmap"      ${OPT} disks/t3/${T3_NAME}/
    get_cmd "ver"               ${OPT} disks/t3/${T3_NAME}/
    get_cmd "set"               ${OPT} disks/t3/${T3_NAME}/
    get_cmd "refresh -s"        ${OPT} disks/t3/${T3_NAME}/
    get_cmd "route -r"          ${OPT} disks/t3/${T3_NAME}/
    get_cmd ".loop stat"        ${OPT} disks/t3/${T3_NAME}/_loop_stat
    get_cmd ".set"              ${OPT} disks/t3/${T3_NAME}/_set
    get_cmd ".sys list"         ${OPT} disks/t3/${T3_NAME}/_sys_list
    get_cmd "fru s"             ${OPT} disks/t3/${T3_NAME}/

    # Collect data via token interface first
    TEXT=`gettext "Collecting data via the token interface from %s"`
    TEXT=`printf "${TEXT}" "${T3_NAME}"`
    logfile "${TEXT}"
    ${CLIENT} -h ${T3_NAME} -f ${TFILE} -b ${EXP_TARGET}/disks/t3/${T3_NAME}

    # Get enclosure count from sysprop.htm
    SYSPROP="${EXP_TARGET}/disks/t3/${T3_NAME}/sysprop.htm"
    if [ -f "${SYSPROP}" ]
    then
	COUNT=`egrep -e unitCount ${SYSPROP} | nawk -F, '{ print $3 }'`
	case "${COUNT}" in
	    1*)
		LIST="u1"
		;;
	    2*)
		LIST="u1 u2"
		;;
	    3*)
		LIST="u1 u2 u3"
		;;
	    *)
		LIST="u1 u2 u3 u4"
		;;
	esac
    else
	# Can't get unitCount from sysprop, do all
	LIST="u1 u2 u3 u4"
    fi

    TEXT=`gettext "Collecting data for enclosures %s"`
    TEXT=`printf "${TEXT}" "${LIST}"`
    logfile "${TEXT}"
    for T3_ID in ${LIST}
    do
	get_cmd "id read ${T3_ID}pcu1" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd "id read ${T3_ID}pcu2" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd "id read ${T3_ID}" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd "id read ${T3_ID}l1" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd "id read ${T3_ID}l2" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd "id read ${T3_ID}c1" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd "disk version ${T3_ID}d1-9" \
	    ${OPT} disks/t3/${T3_NAME}/
	get_cmd ".disk pathstat ${T3_ID}d1-9" \
	    ${OPT} disks/t3/${T3_NAME}/_disk_pathstat_${T3_ID}d1-9
	get_cmd ".disk linkstat ${T3_ID}d1-9 path 0" \
	    ${OPT} disks/t3/${T3_NAME}/_disk_linkstat_${T3_ID}d1-9_path_0
	get_cmd ".disk linkstat ${T3_ID}d1-9 path 1" \
	    ${OPT} disks/t3/${T3_NAME}/_disk_linkstat_${T3_ID}d1-9_path_1
	get_cmd ".disk tmon_list ${T3_ID}d1-9" \
	    ${OPT} disks/t3/${T3_NAME}/_disk_tmon_list_${T3_ID}d1-9
	get_cmd ".disk gettune ${T3_ID}d1-9" \
	    ${OPT} disks/t3/${T3_NAME}/_disk_gettune_${T3_ID}d1-9
    done

    # Run before ftp'ing files
    get_cmd "logger -dmprstlog" ${OPT} disks/t3/${T3_NAME}/

    # Get files via ftp
    get_file 'cmdlog* syslog*'    "ftp:${T3_NAME}:${T3_PASS}:/" \
	disks/t3/${T3_NAME}/files

    get_file 'hosts *.conf *.log' "ftp:${T3_NAME}:${T3_PASS}:/etc" \
	disks/t3/${T3_NAME}/files/etc
}

# Interactive?
RUN=""
which_gate interactive && RUN=notempty
which_gate t3extended  && RUN=notempty
which_gate extended    && RUN=notempty

if [ -n "${RUN}" ]
then
    logfile "Collecting extended data interactively"

    TEXT=`gettext "\nYou will be prompted for a T3 name and password.\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"`
    prompt "${TEXT}"
    prompt ""

    while [ -n "${T3_NAME}" ]
    do
	TEXT=`gettext "Please enter the name of the T3: "`
	prompt "${TEXT}\c"
	read T3_NAME

	if [ -n "${T3_NAME}" ]
	then
	    # Can we ping it?
	    TEXT=`gettext "Verifying connection to %s"`
	    TEXT=`printf "${TEXT}" "${T3_NAME}"`
	    logfile "${TEXT}"
	    ping ${T3_NAME} >/dev/null 2>&1
	    if [ "$?" -ne 0 ]
	    then
		TEXT=`gettext "Unable to connect to %s"`
		TEXT=`printf "${TEXT}" "${T3_NAME}"`
		logfile ERROR "${TEXT}"
		prompt ""
		continue
	    fi

	    # Get password
	    TEXT=`gettext "Please enter the root password for %s: "`
	    TEXT=`printf "${TEXT}" "${T3_NAME}"`
	    prompt "${TEXT}\c"
	    [ -n "${TTY}" ] && stty -echo
	    read T3_PASS
	    [ -n "${TTY}" ] && stty echo
	    prompt ""

	    collect_data
	    prompt ""
	fi
    done
fi

# Not interactive, get data if input file?
if [ -f "${EXP_HOME}/etc/t3input.txt" ]
then
    # Make sure input file is mode 0600
    if `ls -l ${EXP_HOME}/etc/t3input.txt | nawk '{ print $1 }' | egrep -s -e '------$'`
    then
	logfile "Collecting extended data from ${EXP_HOME}/etc/t3input.txt file"
	while read line
	do
	    # Skip comments and blank lines
	    echo $line | sed -e 's/^ *//' -e 's/ *$//' | egrep -s -e '^#' && continue
	    echo $line | egrep -s -e '^$' && continue

	    T3_NAME=`echo $line | nawk '{ print $1 }'`
	    T3_PASS=`echo $line | nawk '{ print $2 }'`

	    if [ -d "${EXP_TARGET}/disks/t3/${T3_NAME}" ]
	    then
		logfile "Data for ${T3_NAME} already collected"
	    else
		logfile "Collecting extended data for ${T3_NAME}"
		collect_data
	    fi
	done < ${EXP_HOME}/etc/t3input.txt
    else
	logfile WARNING "${EXP_HOME}/etc/t3input.txt file not correct mode"
    fi
fi
   0707010003416f000081a00000007000000064000000013afaf6eb0000168d00000020000001f800000000000000000000001100000004reloc/tools/test  #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/test#12 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script

get_cmd "/usr/bin/uptime"

# defaults
SC_NAME="NOTNOISE"
SC_TIME=60
TTY=`tty`
if [ "${TTY}" = "not a tty" ]
then
    TTY=""
fi

TEXT=`gettext "\nYou will be prompted for a System Controller name\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"`
prompt "${TEXT}"
prompt ""

while [ -n "${SC_NAME}" ]
do
    TEXT=`gettext "Please enter the name of the SC: "`
    prompt "${TEXT}\c"
    read SC_NAME

    if [ -n "${SC_NAME}" ]
    then
	# Can we ping it?
	TEXT=`gettext "Verifying connection to %s"`
	TEXT=`printf "${TEXT}" "${SC_NAME}"`
	logfile "${TEXT}"
	ping ${SC_NAME} >/dev/null 2>&1
	if [ "$?" -ne 0 ]
	then
	    TEXT=`gettext "Unable to connect to ${SC_NAME}"`
	    TEXT=`printf "${TEXT}" "${SC_NAME}"`
	    logfile ERROR "${TEXT}"
	    prompt ""
	    continue
	fi

	# Get password
        TEXT=`gettext "Please enter the root password for %s: "`
        TEXT=`printf "${TEXT}" "${SC_NAME}"`
	prompt "${TEXT}\c"
        [ -n "${TTY}" ] && stty -echo
        read SC_PASS
        [ -n "${TTY}" ] && stty echo
        prompt ""

	# Use small default time for first command to ensure this is an SC
	OPT="telnet:sc:${SC_NAME}:${SC_PASS}:5"
	get_cmd "showsc -v" ${OPT} sc/${SC_NAME}/

	# Make sure root password correct
	if egrep -s -e "Invalid password" ${EXP_TARGET}/sc/${SC_NAME}/showsc_-v.out
	then
	    rm -rf ${EXP_TARGET}/sc/${SC_NAME}
	    TEXT=`gettext "root password for %s is incorrect"`
	    TEXT=`printf "${TEXT}" "${SC_NAME}"`
	    logfile ERROR "${TEXT}"
	    prompt ""
	    continue
	fi

	# Make sure we are talking to an SC
	if ! egrep -s -e "Platform Shell" ${EXP_TARGET}/sc/${SC_NAME}/showsc_-v.out
	then
	    rm -rf ${EXP_TARGET}/sc/${SC_NAME}
	    TEXT=`gettext "%s is not a System Controller"`
	    TEXT=`printf "${TEXT}" "${SC_NAME}"`
	    logfile ERROR "${TEXT}"
	    prompt ""
	    continue
	fi

	OPT="telnet:sc:${SC_NAME}:${SC_PASS}:${SC_TIME}"
	get_cmd "showboards -e"       ${OPT} sc/${SC_NAME}/
	get_cmd "showenvironment -tv" ${OPT} sc/${SC_NAME}/
	get_cmd "showboards -p cpu"   ${OPT} sc/${SC_NAME}/

	prompt ""
    fi
done

# defaults
T3_NAME="NOTNOISE"
T3_TIME=60
if [ "${EXP_HOME}" = "/" ]
then
    CLIENT="${EXP_LIB}/t3client"
    TFILE="${EXP_LIB}/t3files.txt"
else
    CLIENT="${EXP_HOME}/bin/t3client.`uname -p`"
    TFILE="${EXP_HOME}/etc/t3files.txt"
fi

TEXT=`gettext "\nYou will be prompted for a T3 name and password.\n    If hostname cannot be resolved, please use IP address.\n\nType return to end the list.\n\n"`
prompt "${TEXT}"
prompt ""

while [ -n "${T3_NAME}" ]
do
    TEXT=`gettext "Please enter the name of the T3: "`
    prompt "${TEXT}\c"
    read T3_NAME

    if [ -n "${T3_NAME}" ]
    then
	# Can we ping it?
	TEXT=`gettext "Verifying connection to %s"`
	TEXT=`printf "${TEXT}" "${T3_NAME}"`
	logfile "${TEXT}"
	ping ${T3_NAME} >/dev/null 2>&1
	if [ "$?" -ne 0 ]
	then
	    TEXT=`gettext "Unable to connect to %s"`
	    TEXT=`printf "${TEXT}" "${T3_NAME}"`
	    logfile ERROR "${TEXT}"
	    prompt ""
	    continue
	fi

	# Get password
	TEXT=`gettext "Please enter the root password for %s: "`
	TEXT=`printf "${TEXT}" "${T3_NAME}"`
	prompt "${TEXT}\c"
	[ -n "${TTY}" ] && stty -echo
	read T3_PASS
	[ -n "${TTY}" ] && stty echo
	prompt ""

	# Execute commands in T3_CMDS, use small timeout to ensure this is a T3
	OPT="telnet:t3:${T3_NAME}:${T3_PASS}:5"
	get_cmd "ls -l /"           ${OPT} disks/t3/${T3_NAME}/

        # Make sure root password correct
        if egrep -s -e "Invalid password" ${EXP_TARGET}/disks/t3/${T3_NAME}/ls_-l_@.out
        then
            rm -rf ${EXP_TARGET}/disks/t3/${T3_NAME}
            TEXT=`gettext "root password for %s is incorrect"`
            TEXT=`printf "${TEXT}" "${T3_NAME}"`
            logfile ERROR "${TEXT}"
            prompt ""
            continue
        fi

        # Make sure we are talking to a T3
        if ! egrep -s -e "pSOSystem" ${EXP_TARGET}/disks/t3/${T3_NAME}/ls_-l_@.out
        then
            rm -rf ${EXP_TARGET}/disks/t3/${T3_NAME}
            TEXT=`gettext "%s is not a StorEdge T3"`
            TEXT=`printf "${TEXT}" "${T3_NAME}"`
            logfile ERROR "${TEXT}"
            prompt ""
            continue
        fi

	OPT="telnet:t3:${T3_NAME}:${T3_PASS}:${T3_TIME}"
	get_cmd "fru s sys"         ${OPT} disks/t3/${T3_NAME}/
	get_cmd "fru l"             ${OPT} disks/t3/${T3_NAME}/
	get_cmd "fru st"            ${OPT} disks/t3/${T3_NAME}/
	get_cmd "fru myuid"         ${OPT} disks/t3/${T3_NAME}/
	get_cmd "fru s"             ${OPT} disks/t3/${T3_NAME}/

	# Collect data via token interface first
	TEXT=`gettext "Collecting data via the token interface from %s"`
	TEXT=`printf "${TEXT}" "${T3_NAME}"`
	logfile "${TEXT}"
	${CLIENT} -h ${T3_NAME} -f ${TFILE} -b ${EXP_TARGET}/disks/t3/${T3_NAME}

	# Get enclosure count from sysprop.htm
	SYSPROP="${EXP_TARGET}/disks/t3/${T3_NAME}/sysprop.htm"
	if [ -f "${SYSPROP}" ]
	then
	    COUNT=`egrep -e unitCount ${SYSPROP} | nawk -F, '{ print $3 }'`
	    case "${COUNT}" in
	        1*)
		    LIST="u1"
		    ;;
	        2*)
		    LIST="u1 u2"
		    ;;
	        3*)
		    LIST="u1 u2 u3"
		    ;;
	        *)
		    LIST="u1 u2 u3 u4"
		    ;;
	    esac
	else
	    # Can't get unitCount from sysprop, do all
	    LIST="u1 u2 u3 u4"
	fi

	TEXT=`gettext "Collecting data for enclosures %s"`
	TEXT=`printf "${TEXT}" "${LIST}"`
	logfile "${TEXT}"
	for T3_ID in ${LIST}
	do
	    get_cmd "id read ${T3_ID}pcu1" ${OPT} disks/t3/${T3_NAME}/
	done

	get_file 'hosts *.conf *.log' "ftp:${T3_NAME}:${T3_PASS}:/etc" disks/t3/${T3_NAME}/files/etc

	prompt ""
    fi
done
   07070100034170000081a00000007000000064000000013afafc5600000d1000000020000001f800000000000000000000001100000004reloc/tools/u4ft  #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/u4ft#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

CMSHOME=/usr/platform/SUNW,Ultra-4FT/SUNWcms
TEXT=`gettext "Not an FT1800 system"`
require "test -d \"${CMSHOME}\"" "${TEXT}"

# collect status-logs. Use cpio to preserve symbolic links
get_dir /var/SUNWlogu u4ft/var_SUNWlogu

# collect COD logs and license if QU2 or above
get_dir /var/SUNWftmu/u4ftcod u4ft/var_SUNWftmu_u4ftcod
get_dir /etc/SUNWftmu/u4ftcod u4ft/etc_SUNWftmu_u4ftcod

# collecting cms config files
get_dir /etc/SUNWcms/.config  u4ft/etc_SUNWcms_.config

# collect split mode files
get_cmd "${CMSHOME}/sbin/splitinfo" u4ft/Splitmode/splitinfo
get_file /etc/splitd.conf u4ft/Splitmode
get_file /etc/config.icn* u4ft/Splitmode

# collect Firmware upgrade information QU1 and above
if [ -d  /usr/platform/SUNW,Ultra-4FT/SUNWftmu ]; then
   get_cmd "/usr/bin/ls -lR /usr/platform/SUNW,Ultra-4FT/SUNWftmu" u4ft/Firmware/firmware-ls-lR
   get_file /etc/SUNWftmu/u4ft_compatDB  u4ft/Firmware
   get_file /etc/SUNWftmu/u4ft_syspartno u4ft/Firmware
fi

# collect SEVM setup specific to the ft 1800
get_file /etc/default/vxassist      u4ft/ft1800_sevm/etc_default_vxassist
get_file /etc/vx/sbin/vxaltstale    u4ft/ft1800_sevm/etc_vx_sbin_vxaltstale
get_file /etc/rc2.d/S95vxvm-recover u4ft/ft1800_sevm/etc_rc2.d_vxvm-recover

# collect nvram and debug logs  (still needed for patch C/D machines)
get_cmd "/usr/bin/cat /dev/u4ftlog:nvlog,nodelay" u4ft/Misc/nvlog,nodelay
get_cmd "/usr/bin/cat /dev/u4ftlog:debug,nodelay" u4ft/Misc/debug,nodelay

# copy /etc/release - specific to ft 1800
get_file /etc/release u4ft/Misc/etc_release

# grab states of all devices according to FT framework
${CMSHOME}/lib/u4ftctl find / | while read cookie;do
    get_cmd "${CMSHOME}/lib/u4ftctl get_path $cookie"     u4ft/Misc/$cookie/get_path
    get_cmd "${CMSHOME}/lib/u4ftctl get_state $cookie"    u4ft/Misc/$cookie/get_state
    get_cmd "${CMSHOME}/lib/u4ftctl get_tag $cookie"      u4ft/Misc/$cookie/get_tag
    get_cmd "${CMSHOME}/lib/u4ftctl get_driver $cookie"   u4ft/Misc/$cookie/get_driver
    get_cmd "${CMSHOME}/lib/u4ftctl get_instance $cookie" u4ft/Misc/$cookie/get_instance

    # For compatibility, put all command output in a summary file
    echo_file u4ft/Misc/all-device-states.u4ftctl "$cookie"
    cat ${EXP_TARGET}/u4ft/Misc/$cookie/get_path.out | echo_file u4ft/Misc/all-device-states.u4ftctl
    cat ${EXP_TARGET}/u4ft/Misc/$cookie/get_state.out | echo_file u4ft/Misc/all-device-states.u4ftctl
    cat ${EXP_TARGET}/u4ft/Misc/$cookie/get_tag.out | echo_file u4ft/Misc/all-device-states.u4ftctl
    cat ${EXP_TARGET}/u4ft/Misc/$cookie/get_driver.out | echo_file u4ft/Misc/all-device-states.u4ftctl
    cat ${EXP_TARGET}/u4ft/Misc/$cookie/get_instance.out | echo_file u4ft/Misc/all-device-states.u4ftctl
    echo_file u4ft/Misc/all-device-states.u4ftctl ""
done

# collect eeprom data
for LOCATION in \
A-MBD B-MBD A-CPU B-CPU A-CAF B-CAF \
A-PCI0 A-PCI1 A-PCI2 A-PCI3 A-PCI4 A-PCI5 A-PCI6 A-PCI7 \
B-PCI0 B-PCI1 B-PCI2 B-PCI3 B-PCI4 B-PCI5 B-PCI6 B-PCI7 \
A-RMM B-RMM A-DSK B-DSK \
A-PSU0 A-PSU1 A-PSU2 B-PSU0 B-PSU1 B-PSU2
do
    get_cmd "${CMSHOME}/sbin/cmsfruinfo -i -l $LOCATION EE_EEPROM" u4ft/fru_eeproms/$LOCATION
done
07070100034171000081a00000007000000064000000013afafc57000002ae00000020000001f800000000000000000000001000000004reloc/tools/var   #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/var#5 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit $script default all

get_cmd  "/bin/ls -ld /var/sadm"           var/sadm-ld
get_cmd  "/bin/ls -l  /var/yp/binding"     var/yp_binding_ls-l
get_file "/var/sadm/softinfo/INST_RELEASE" var
get_file "/var/sadm/install/contents"      var
get_file "/var/sadm/system/admin/CLUSTER"  var

# /var/log can be too large, comment in if needed
# get_dir recursive /var/log var/log

for i in `echo ${EXP_CRON_WHICH:=adm,lp,root,sys,uucp} | sed -e 's/,/ /g'`
do
    get_file "/var/spool/cron/crontabs/$i" var/cron
done
  07070100034172000081a00000007000000064000000013afb2dbf000005a300000020000001f800000000000000000000001200000004reloc/tools/vtsst #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/vtsst#12 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage stortools st4 vts $script default all

TEXT=`gettext "StorTools Diagnostics not installed"`
require "pkginfo -q SUNWvtsst" "${TEXT}"

ROOT=`pkginfo -r SUNWvtsst`

# Get StorTools 4.0 log files
get_file "/var/opt/SUNWvtsst/logs/sunvts.err"   vtsst/
get_file "/var/opt/SUNWvtsst/logs/activity.log" vtsst/
get_file "/var/opt/SUNWvtsst/logs/*.errlog"     vtsst/

# Which binary should be used
ARCH=`isainfo -k`
if [ "${ARCH}" = "sparcv9" ]
then
    VTSPATH="${ROOT}/bin/sparcv9"
else
    VTSPATH="${ROOT}/bin"
fi

# Only run discman if Solaris 8 10/00 or better
REL=`uname -r | awk -F\. '{ print $2 }'`
if [ "${REL}" -ge 8 ]
then
    # If this is Solaris 8, skip 8, 6/00
    if [ ${REL} -eq 8 ]
    then
	# Solaris 8
        egrep -s -e "Solaris 8 s28" /etc/release && SKIP=notempty

	# Solaris 8 6/00
	egrep -s -e "Solaris 8 6/00 s28" /etc/release && SKIP=notempty
    fi

    if [ -z "${SKIP}" ]
    then
	# Validate/Create Snapshot
	if [ -f "/var/opt/SUNWvtsst/logs/SnapShot.log" ]
	then
	    get_cmd "${VTSPATH}/discman -v" vtsst/discman_-v
	else
	    get_cmd "${VTSPATH}/discman -c" vtsst/discman_-c
	fi
    fi
fi

# Get SnapShot data
get_file "/var/opt/SUNWvtsst/logs/SnapShot.log"   vtsst/
get_file "/var/opt/SUNWvtsst/logs/SnapShot.diffs" vtsst/
 07070100034173000081a00000007000000064000000013afb2dbf0000039500000020000001f800000000000000000000001100000004reloc/tools/vxfs  #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/vxfs#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

TEXT=`gettext "VxFS not installed"`
require "pkginfo -q VRTSvxfs" "${TEXT}"

#
# VxFS info
#
get_file /etc/vx/tunefstab etc/vx
get_dir  /etc/vx/elm       etc/vx/elm

# Use df - convert parens to ':' and get 1st and 2nd args (filesystem and device)
df -lFvxfs | sed -e "s/(/:/" -e "s/)/:/" | nawk -F: '{print $1,$2}' | while read fs dev
do
    bdev=`echo $dev | awk -F: '{ print $1 }' | sed 's/[\(\)]//g'`
    rdev=`echo $bdev | sed 's/dsk/rdsk/'`
    FS=`echo $fs | sed 's/\//_/g'`

    get_cmd "/usr/sbin/vxtunefs -p $bdev"    disks/vxfs/vxtunefs_-p=${FS}
    get_cmd "/usr/lib/fs/vxfs/fsadm -ED $fs" disks/vxfs/fsadm_-ED=${FS}
    get_cmd "/usr/sbin/fstyp -v $bdev"       disks/vxfs/fstyp_-v=${FS}
done
   07070100034174000081a00000007000000064000000013afb2dbf0000150600000020000001f800000000000000000000001100000004reloc/tools/vxvm  #!/bin/ksh -p
# $Id: //depot/dev/proactive/explorer3/tools/vxvm#8 $

# Source tools functions
. ${EXP_LIB}/exp_tools

# Run if specified to do so
script=`basename $0`
which_gate_exit storage $script default all

pkginfo -q SUNWvxvm; PKGSUNW=$?
pkginfo -q VRTSvxvm; PKGVXVM=$?
TEXT=`gettext "VxVM not installed"`
require "test \"$PKGSUNW\" -eq 0 -o \"$PKGVXVM\" -eq 0" "${TEXT}"

#
# VxVM info
#

# If Sun's VxVM is running, PKGSUNW will be set to 0.
# If Veritas's VxVM is running, PKGVXVM will be set to 0.
# Gotta check to MAKE SURE that the VRTS package, if installed, is
# a 2.x or 3.x flavor.  If customer bought VxVM from Veritas, it's
# possible that their VRTSvxvm package is a 2.x variety.  If it's
# a SUNW package, it MUST be 2.x.
if [ $PKGSUNW -eq 0 ]
then
   VM2X=0; VM3X=1
else
   VER=`pkginfo -l VRTSvxvm | egrep -e "VERSION:" | nawk '{print substr($2,1,1)}'`
   if [ "$VER" -eq "3" ]
   then
      VM2X=1; VM3X=0
   else
      VM2X=0; VM3X=1
   fi
fi

# At this point, if VxVM 2.x is running, VM2X will be 0.
# If VxVM 3.x is running, VM3X will be 0.
get_cmd "/usr/sbin/vxprint -Ath" disks/vxvm/vxprint-Ath
get_cmd "/usr/sbin/vxprint -th"  disks/vxvm/vxprint-th
get_cmd "/usr/sbin/vxprint -h"   disks/vxvm/vxprint-h
get_cmd "/usr/sbin/vxdg -q list" disks/vxvm/vxdg-q-list

# Starting in the 3.X version, a new option "-o alldgs" should be added
# to the vxdisk list command to gather more information about deported
# diskgroups.
if [ $VM2X -eq 0 ]
then
   get_cmd "/usr/sbin/vxdisk list"           disks/vxvm/vxdisk-list
else
   get_cmd "/usr/sbin/vxdisk -o alldgs list" disks/vxvm/vxdisk-list
   get_cmd "/usr/sbin/vxprint -thrL"         disks/vxvm/vxprint-thrL
   get_cmd "/usr/sbin/vxprint -hr"           disks/vxvm/vxprint-hr

   # Collect logs in VxVM 3.x
   get_dir "/var/opt/vmsa/logs" disks/vxvm/logs/
fi

# recursive listings of the /dev/vx/ directory
get_cmd "/usr/bin/ls -lR /dev/vx" disks/vxvm/ls-lR_dev_vx

# list the disk groups
/usr/sbin/vxdg -q list | while read DG_NAME DG_STATE DG_ID
do
    if [ "$DG_STATE" =  "disabled" ]
    then
	# dg is disabled, process next
	continue
    fi

    # list free space that can be used  for allocating subdisks
    get_cmd "/usr/sbin/vxdg -g $DG_NAME free" disks/vxvm/disk_groups/vxdg-g_free=$DG_NAME

    # List the contents of disk group and its configuration
    get_cmd "/usr/sbin/vxdg list $DG_NAME" disks/vxvm/disk_groups/vxdg_list=$DG_NAME

    # list the volumes
    get_cmd "/usr/sbin/vxprint -vng $DG_NAME" disks/vxvm/disk_groups/vxprint-vng=$DG_NAME

    # store volume list in VOL_LIST, I need this so all volumes
    # are listed on a single line
    VOL_LIST=`/usr/sbin/vxprint -vng $DG_NAME`
    # Turn newlines into spaces
    VOL_LIST=`echo ${VOL_LIST} | sed -e 's,\n, ,g'`

    # this output will eliminate the dg and dm definitions, this is
    # the format vxmake expects when recreating the private area for a
    # lost disk group.  This command is different depending on the
    # version of VxVM being used.
    if [ $VM2X -eq 0 ]
    then
       get_cmd "/usr/sbin/vxprint -hmQqg $DG_NAME $VOL_LIST" \
	  disks/vxvm/disk_groups/vxprint-hmQqg_4vxmk=$DG_NAME
    else
       get_cmd "/usr/sbin/vxprint -rmvg $DG_NAME $VOL_LIST"  \
	  disks/vxvm/disk_groups/vxprint-rmv_4vxmk=$DG_NAME
    fi

    # this output lists also the dg and dm definitions, this is the
    # format vxprint expects when playing back the output later.
    if [ $VM2X -eq 0 ]
    then
       get_cmd "/usr/sbin/vxprint -hmQqg $DG_NAME" \
	   disks/vxvm/disk_groups/vxprint-hmQqg=$DG_NAME
    else
       # For 3.x, this takes two commands.....
       get_cmd "/usr/sbin/vxprint -mdg   $DG_NAME" \
	   disks/vxvm/disk_groups/vxprint-mvrGg=$DG_NAME
       get_cmd "/usr/sbin/vxprint -mvrGg $DG_NAME" \
	   disks/vxvm/disk_groups/vxprint-mvrGg=$DG_NAME
    fi

    #
    # We need to determine 'privpaths' for vxprivutil
    #
    # Get the name of the first disk with configuration data, eg: c1t0d0s7
    # only list the disks with 'clean' copies on them.
    # exit in awk stops after the first line, i.e. disk
    CONF_DISK=`/usr/sbin/vxdg list $DG_NAME | egrep -e "state=clean" | \
		nawk '$1 == "config" && $2 == "disk" {print $3; exit} '`

    # Dump the disk's config and determine the path to its private region.
    PRIV_PATH=`/usr/sbin/vxdisk list ${CONF_DISK} | \
	nawk '$1 == "privpaths:" {sub(/block=/, "", $2); print $2; exit}'`

    if [ "$PRIV_PATH" = "" ]
    then
	# Couldn't find privpaths:, so get pubpaths: instead. In some cases
	# like using a dummy slice for rootdg 'privpaths:' may be missing.
	PRIV_PATH=`/usr/sbin/vxdisk list ${CONF_DISK} | \
	    nawk '$1 == "pubpaths:" {sub(/block=/, "", $2); print $2; exit}'`
    fi

    if [ "$PRIV_PATH" != "" ]
    then
	get_cmd "/etc/vx/diag.d/vxprivutil dumpconfig ${PRIV_PATH}" \
	    disks/vxvm/disk_groups/vxprivutil-dumpconfig=${DG_NAME}
    fi
done

#
# Files to check for hot relocation
#    /etc/default/vxassist is collected in etc.info
#
get_file /etc/vx/vxrelocd             etc/vx
get_file /etc/rc2.d/S95vxvm-recover   etc/vx
get_file /etc/vfstab.prevm            etc/vx

get_dir  /etc/vx/elm                  etc/vx/elm
get_dir  recursive /etc/vx/reconfig.d etc/vx/reconfig.d
get_dir  recursive /var/vxvm          etc/vx/var

# Sum of libraries
get_cmd "/usr/bin/sum /etc/vx/slib/* /usr/lib/libc.so.1 /usr/lib/libthread.so.1" etc/vx/sum
  07070100141404000041e80000007000000064000000033b01aeee0000000000000020000001f800000000000000000000000500000004root  070701001dca03000041e80000007000000064000000033b01aeee0000000000000020000001f800000000000000000000000900000004root/var  070701001de2c4000041e80000007000000064000000033b01aeee0000000000000020000001f800000000000000000000000f00000004root/var/spool    0707010009e504000041e80000007000000064000000033b01aeee0000000000000020000001f800000000000000000000001400000004root/var/spool/cron   070701000a4804000041e80000007000000064000000023b01aeee0000000000000020000001f800000000000000000000001d00000004root/var/spool/cron/crontabs  070701000a4805000081a000000070000000640000000139dd04440000006000000020000001f800000000000000000000002200000004root/var/spool/cron/crontabs/root ${EXP_CRONTAB_MINUTE} ${EXP_CRONTAB_HOUR} * * ${EXP_CRONTAB_DAY} ${EXP_HOME}/bin/explorer -e -q
07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!                                                                                                                                        
