#!/bin/ksh # IBM_PROLOG_BEGIN_TAG # This is an automatically generated prolog. # # # # Licensed Materials - Property of IBM # # (C) COPYRIGHT International Business Machines Corp. 2000,2019 # All Rights Reserved # # US Government Users Restricted Rights - Use, duplication or # disclosure restricted by GSA ADP Schedule Contract with IBM Corp. # # IBM_PROLOG_END_TAG # sccsid = "@(#)10 1.19 src/rsct/rm/ER/logevent, ERrm, rsct_rady, rady2035a 11/12/15 16:39:55" ##################################################################### # # Name: logevent # # Purpose: Logs event information generated by Event Response resource # manager to a specified log file. # # Inputs: Name of the file where event information is logged. # An absolute path for the logfile operand should be specified. # ##################################################################### generate_message () { cat <<EOF ===================================== ${EventTime} ${ConditionName}: $ERRM_COND_NAME ${Severity}: $COND_SEVERITY ${EventType}: $TYPE ${Expression}: $ERRM_EXPR ${ResourceName}: $ERRM_RSRC_NAME ${ResourceClass}: $ERRM_RSRC_CLASS_PNAME ${DataType}: $ERRM_DATA_TYPE ${DataValue}: $ERRM_VALUE ${NodeName}: $ERRM_NODE_NAME ${NodeNameList}: $ERRM_NODE_NAMELIST ${RsrcType}: $ERRM_RSRC_TYPE EOF } # main() # Set path to known value PATH=/opt/rsct/bin:/usr/xpg4/bin:/usr/bin:/usr/sbin:/bin export PATH PERL=/usr/bin/perl # Instead of using ctdspmsg, we directly call dspmsg to improve the # performance. # Need to ensure the set id and message id are correct. #CTMSG=/opt/rsct/bin/ctdspmsg CTMSG=/usr/bin/dspmsg MSGMAPPATH=/opt/rsct/msgmaps export MSGMAPPATH ConditionName=`$CTMSG -s 5 IBM.ERrm.cat 2 'Condition Name'` Severity=`$CTMSG -s 5 IBM.ERrm.cat 3 'Severity'` EventType=`$CTMSG -s 5 IBM.ERrm.cat 4 'Event Type'` Expression=`$CTMSG -s 5 IBM.ERrm.cat 5 'Expression'` ResourceName=`$CTMSG -s 5 IBM.ERrm.cat 6 'Resource Name'` ResourceClass=`$CTMSG -s 5 IBM.ERrm.cat 8 'Resource Class'` DataType=`$CTMSG -s 5 IBM.ERrm.cat 9 'Data Type'` DataValue=`$CTMSG -s 5 IBM.ERrm.cat 10 'Data Value'` NodeName=`$CTMSG -s 5 IBM.ERrm.cat 7 'Node Name'` NodeNameList=`$CTMSG -s 5 IBM.ERrm.cat 14 'Node NameList'` RsrcType=`$CTMSG -s 5 IBM.ERrm.cat 15 'Resource Type'` Usage=`$CTMSG -s 5 IBM.ERrm.cat 11 'Usage'` InvalidDir=`$CTMSG -s 5 IBM.ERrm.cat 12 'invalid directory'` # Convert Seveirty case $ERRM_COND_SEVERITYID in 0 ) COND_SEVERITY=`$CTMSG -s 5 IBM.ERrm.cat 19 'Informational'`;; 1 ) COND_SEVERITY=`$CTMSG -s 5 IBM.ERrm.cat 20 'Warning'`;; 2 ) COND_SEVERITY=`$CTMSG -s 5 IBM.ERrm.cat 21 'Critical'`;; esac # Convert EventType case $ERRM_TYPEID in 0 ) TYPE=`$CTMSG -s 5 IBM.ERrm.cat 17 'Event'`;; 1 ) TYPE=`$CTMSG -s 5 IBM.ERrm.cat 18 'Rearm event'`;; esac while getopts ":h" opt do case $opt in h ) print "${Usage} : `basename $0` [-h] logfile " exit 0;; ? ) print "${Usage} : `basename $0` [-h] logfile " exit 3;; esac done # Check if a required logfile is specified if [[ $# -lt 1 ]]; then print -u2 "${Usage} : `basename $0` [-h] logfile " exit 1 fi # Check if the logfile path is valid fileName=$1 pathName=${fileName%/*} if [[ -z $pathName ]]; then pathName=/ fi if [[ ! -d $pathName ]]; then print -u2 "${InvalidDir} " exit 2 fi # convert time string seconds=${ERRM_TIME%,*} EventTime=$(seconds=$seconds $PERL -e \ ' use POSIX qw(strftime); print strftime("%A %D %T", localtime($ENV{seconds}) ); ' ) data=$(generate_message) ofile=$1 \ $PERL -e \ ' use Fcntl qw(:DEFAULT :flock); $mytmpdir = `/opt/rsct/bin/cttmpdir`; $rc = $?; if ($rc != 0) { $mytmpdir = "/tmp"; } else { chomp($mytmpdir); } open(ofh,">>$mytmpdir/errmlogevent.lck"); flock(ofh,LOCK_EX); $rc = 0; $uname=`uname`; chomp $uname; # alog only exists on aix if ("$uname" eq "AIX") { `echo "\$data" | alog -q -f "\$ofile" -s 65536` ; $rc = $?>>8; } else { open(ofh2,">>$ENV{ofile}"); print ofh2 "$ENV{data}" ; close(ofh2); } close(ofh); exit $rc; ' exit $?