#!/bin/sh
#
# @(#)agtget_sysconf	@(#)agtget_sysconf	7.1 05/05/10
#**********************************************************************
#*  name    = agtget_sysconf                                          *
#*  func    =                                                         *
#*  note    =                                                         *
#*                                                                    *
#*         All Rights Reserved. Copyright (C) 2005, Hitachi, Ltd.     *
#*         Licensed Material of Hitachi, Ltd.                         *
#*                                                                    *
#**********************************************************************

#========================================================#
#= Set environment ======================================#
#========================================================#

umask 222

LANG=C
export LANG

PATH=/usr/bin:/usr/sbin:/sbin:/etc:/bin
export PATH

#========================================================#
#= Header ===============================================#
#========================================================#

VERSION="03300000"

CMDNAME="agtget_sysconf"

COLLECTDIR="/var/opt/hitachi/serverconductor/agent/collect/"

CPDIR_1="/etc/rc.d"
CPDIR_2="/etc/inetd.d"
CPDIR_3="/etc/xinetd.d"

CPFILE_1="/etc/hosts"
CPFILE_2="/etc/lmhosts"
CPFILE_3="/etc/hosts.allow"
CPFILE_4="/etc/hosts.deny"
CPFILE_5="/etc/services"
CPFILE_6="/etc/inetd.conf"
CPFILE_7="/etc/group"
CPFILE_8="/etc/protocols"
CPFILE_9="/etc/profile"
CPFILE_10="/etc/bashrc"
CPFILE_11="/etc/csh.login"
CPFILE_12="/etc/csh.cshrc"
CPFILE_13="/etc/fstab"
CPFILE_14="/etc/hosts.equiv"
CPFILE_15="/etc/xinetd.conf"
CPFILE_16="/etc/samba/lmhosts"

#========================================================#
#= Output message =======================================#
#========================================================#

function Msg_usage
{
	if [ $# -eq 0 ]
	then
		if [ -d $COLLECTDIR ]
		then
			echo "Usage:$CMDNAME [-ver] directory\n" >> ${COLLECTDIR}/${CMDNAME}_error
		fi
	elif [ -d $1 ]
	then
		echo "Usage:$CMDNAME [-ver] directory\n" >> $1/${CMDNAME}_error
	elif [ -d $COLLECTDIR ]
	then
		echo "Usage:$CMDNAME [-ver] directory\n" >> ${COLLECTDIR}/${CMDNAME}_error
	fi
}


function Msg_error
{
	if [ $1 -eq 1 ]
	then
		if [ -d $COLLECTDIR ]
		then
			echo "$CMDNAME: $2 is not a directory.\n" >> ${COLLECTDIR}/${CMDNAME}_error
		fi
	elif [ $1 -eq 2 ]
	then
		echo "$CMDNAME: $2 is not a directory.\n" >> $3/${CMDNAME}_error
	fi
}

#========================================================#
#= Main =================================================#
#========================================================#

HIKICNT=0
VERFLG=0
for HIKISU in $*
do

	HIKICNT=`expr $HIKICNT + 1`

	OPTION=`echo $HIKISU | grep "^-"`
	DIRECTORY=`echo $HIKISU | grep "/-.*$"`
	if [ $HIKICNT -ge 3 ]
	then
		if [ $VERFLG -eq 1 ]
		then
			Msg_usage $2
			exit 1
		else
			Msg_usage $1
			exit 1
		fi
	fi
	if [ "$OPTION" != "" ]
	then
		if [ "$OPTION" = "-ver" ]
		then
			if [ $HIKICNT -eq 1 ] && [ $# -eq 1 ]
			then
				Msg_usage
				exit 1
			elif [ $HIKICNT -ge 2 ]
			then
				Msg_usage
				exit 1
			else
				VERFLG=1
			fi
		else
			if [ $HIKICNT -lt 3 ]
			then
				Msg_usage
				exit 1
			fi
		fi
	elif [ "$DIRECTORY" != "" ] && [ $HIKICNT -lt 3 ]
	then
		Msg_usage
		exit 1
	else
		if [ $HIKICNT -eq 2 ] && [ $# -eq 2 ] && [ $VERFLG -eq 0 ]
		then
			Msg_usage
			exit 1
		fi
	fi
done

if [ $HIKICNT -eq 0 ]
then
	Msg_usage
	exit 1
fi


if [ $VERFLG -ne 0 ]
then
	if [ -d $2 ]
	then
		echo $VERSION > $2/${CMDNAME}_ver
		exit 0
	else
		Msg_error 1 $2
		exit 1
	fi
else
	if [ -d $1 ]
	then
		COUNT=0

		cp -p $CPFILE_1 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		if [ -f $CPFILE_2 ]
		then
			cp -p $CPFILE_2 $1/. 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		cp -p $CPFILE_3 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_4 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_5 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		if [ -f $CPFILE_6 ]
		then
			cp -p $CPFILE_6 $1/. 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		cp -p $CPFILE_7 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_8 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_9 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_10 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_11 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_12 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		cp -p $CPFILE_13 $1/. 2>> $1/${CMDNAME}_error &
		eval `echo PID$COUNT=$!`
		COUNT=`expr $COUNT + 1`

		if [ -f $CPFILE_14 ]
		then
			cp -p $CPFILE_14 $1/. 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		if [ -f $CPFILE_15 ]
		then
			cp -p $CPFILE_15 $1/. 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		if [ -f $CPFILE_16 ]
		then
			cp -p $CPFILE_16 $1/. 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		if [ -d $CPDIR_1 ]
		then
			DIRNAME1=`basename $CPDIR_1`
			cp -rp $CPDIR_1 $1/$DIRNAME1 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		if [ -d $CPDIR_2 ]
		then
			DIRNAME2=`basename $CPDIR_2`
			cp -rp $CPDIR_2 $1/$DIRNAME2 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		if [ -d $CPDIR_3 ]
		then
			DIRNAME3=`basename $CPDIR_3`
			cp -rp $CPDIR_3 $1/$DIRNAME3 2>> $1/${CMDNAME}_error &
			eval `echo PID$COUNT=$!`
			COUNT=`expr $COUNT + 1`
		fi

		i=0	
		while [ 1 ]
		do
			BREAK_FLG=0
			while [ $i -lt $COUNT ]
			do
				eval `echo ID=\\$PID$i`
				PS_P=`(ps -p $ID | grep -v PID | awk '{print $1}') 2>> $1/${CMDNAME}_error`

				if [ "$PS_P" != "" ]
				then
					sleep 1
					BREAK_FLG=1
					break
				fi

				i=`expr $i + 1`
			done

			if [ $BREAK_FLG -eq 0 ]
			then
				break
			fi
		done

		if [ -f $1/${CMDNAME}_error ] && [ ! -s $1/${CMDNAME}_error ]
		then
			rm $1/${CMDNAME}_error
		fi

		exit 0

	else
		Msg_error 1 $1
		exit 1
	fi
fi
