#!/bin/sh
#-vux
#ident "$.dlmgetras_light: .dlmgetras_light Build 5.91.0.4 07/03/21 19:00:00 $"
#
#/*----------------------------------------------------------------------------*/
#/* PRODUCT :  HDLM Driver 0590                                                */
#/* NAME :     DLMgetras Light                                                 */
#/* FUNCTION : HDLM collects error information                                 */
#/* INSTANCE:                                                                  */
#/* ATTR:                                                                      */
#/* MEMO :     DLMgetras Execution Shell Script                                */
#/*                                                                            */
#/* DATE :     2006.12.28                                                      */
#/* HISTORY :                                                                  */
#/*                                                                            */
#/* All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.               */
#/*----------------------------------------------------------------------------*/
#@(#)HDLM Collects error information 05-90 (Dec 28 2006)

VERSION=`/bin/uname -r |/usr/bin/cut -d "." -f2`
if [ $VERSION -eq 4 ] ; then
	KERNEL_2_4=1
else
	KERNEL_2_6=1
fi

PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:$PATH"
export PATH
ECHO="/bin/echo"
GAWK="/bin/gawk"
MGR_DIR=`$ECHO $1 | $GAWK -F "/" '{print $NF}'`
if [ -z $MGR_DIR ] ; then
	MGR_DIR=`$ECHO $1 | $GAWK -F "/" '{print $(NF-1)}'`
fi

AUTORAS_DIR="$1"
BIN_DIR="/opt/DynamicLinkManager/bin"
CHMOD="/bin/chmod -R"
CP="/bin/cp -p"
DLMCFGMGR="/sbin/dlmcfgmgr"
DLMGETOMTRACE="$BIN_DIR/dlmgetomtrace"
DLNKMGR="$BIN_DIR/dlnkmgr"
FREE="/usr/bin/free"
TMP_DIR="$AUTORAS_DIR/DLMgetras_tmp.$$"
TMP_RAS_DIR="$TMP_DIR/$MGR_DIR"
GETRAS_INFO="$TMP_RAS_DIR/getrasinfo"
GETRAS_LOG="$TMP_RAS_DIR/getras.log"
LOG_DIR="/var/opt/DynamicLinkManager/log"
MKDIR="/bin/mkdir -p"
PS="/bin/ps"
RM="/bin/rm"
RTN_FALSE=1
STATUS=1
TAR="/bin/tar"
TAR_DIR="$MGR_DIR"
TARNAME=getras

######################################################################################################################################
#Message Function
print_messages( )
{
	  case $1 in
	  'KAPL10020')
          	 PRESENT_TIME=`/bin/date '+%Y/%m/%d  %H:%M:%S'`"(GMT:"`/bin/date -u '+%Y/%m/%d  %H:%M:%S'`")"
          	 $ECHO "KAPL10020-I The file has been obtained successfully. File = $2, Collection time = $PRESENT_TIME"  >> $GETRAS_LOG
           ;;
  	  'KAPL10033')
     		 $ECHO "KAPL10033-W The file does not exist. Filename = $2"  >> $GETRAS_LOG
           ;;

   	  'KAPL10034')
     		 $ECHO "KAPL10034-E The file could not be copied. Filename = $2, Details = $3" >> $GETRAS_LOG
     	   ;;
   	   *)
     	    exit $RTN_FALSE
     	   ;;
 	  esac
}

#######################################################################################################################################
#Creating custom files
create_files( )
{
	if [ $KERNEL_2_4 ] ; then
		$DLMCFGMGR -v > $GETRAS_INFO/dlmcfgmgr-v.txt
	else
		$DLMCFGMGR -v -udev > $GETRAS_INFO/dlmcfgmgr-v.txt
	fi
	
	$DLNKMGR view -lu -item slpr pn cp clpr type ic ie dnu hctl lb > $GETRAS_INFO/dlmmgr-lu.txt

	$DLMGETOMTRACE > $GETRAS_INFO/dlmgetomtrace.dmp

	if [ $KERNEL_2_4 ] ; then
		$PS -elf > $GETRAS_INFO/ps-elf.txt
	else
		$PS -elF > $GETRAS_INFO/ps-elF.txt
	fi

	$FREE > $GETRAS_INFO/free.txt

	$CHMOD 400 $GETRAS_INFO/*

}
#########################################################################################################################################
#Creating directories
make_dir( )
{
	$MKDIR $TMP_RAS_DIR$LOG_DIR
	RET=$?
	if [ $RET -ne 0 ]; then
		exit
	fi
	$MKDIR $GETRAS_INFO
	RET=$?
	if [ $RET -ne 0 ]; then
		exit
	fi
}

#########################################################################################################################################
#File collection function
collect_files( )
{
	for GET_FILE in $1
	do
		    if [ ! -f "$GET_FILE" ];
   		    then
     		    	 print_messages "KAPL10033" "$GET_FILE"
     			 continue
   		    fi

  		    ERR_MSG=`$CP $GET_FILE $TMP_RAS_DIR$GET_FILE 2>&1`
		    RET=$?
   		    if [ $RET -eq 0 ];
     		    then
       		   	 print_messages "KAPL10020" "$GET_FILE"
     		    else
      		         print_messages "KAPL10034" "$GET_FILE" "$ERR_MSG"
   		    fi
	done
}
##########################################################################################################################################
#Exit handler
fn_exit( )
{
	if [ $STATUS -eq 0 ]; then
		$CP $TARNAME.tar.gz $AUTORAS_DIR
		cd /
		$RM -rf $TMP_DIR
		exit 0
	else
		cd /
		$RM -rf $AUTORAS_DIR
		exit 1
	fi
}	
##########################################################################################################################################
#DLMgetras Light Main
#Creation of the autoras directory

trap "fn_exit" EXIT 1 3 5 9 15

mask=`umask`
umask 077

$MKDIR $AUTORAS_DIR
RET=$?
#Checking if the autoras directory is created
if [ $RET -ne 0 ]; then
	exit
fi

#Creation of a temporary directory
$MKDIR $TMP_RAS_DIR
RET=$?
#Check if the temporary directory is created
if [ $RET -ne 0 ]; then
	exit
fi

########File collection#########
#Creating directories

make_dir

#Copying the files in the respective directories

GET_FILE=" $LOG_DIR/.dlmomtrace[1-5].log "

collect_files "$GET_FILE" 2>> $GETRAS_LOG

create_files 2>> $GETRAS_LOG

$CHMOD 400 $GETRAS_LOG
umask=$mask

#Creating the tar file
cd $TMP_DIR
$TAR -czf $TARNAME.tar.gz $TAR_DIR 2>> $GETRAS_LOG
RET=$?
if [ $RET -ne 0 ]; then
	exit
else
	$CHMOD 400 $TARNAME.tar.gz
	STATUS=0
	exit
fi