#!/usr/bin/sh # # Script : cdcichk # Description : Initially this script started off with determining a user's idle # status, but later it transformed itself into a stable alert system # probably still used in one of the top banks in India # Author : Premson P. R. # C. Time : 27-Dec-2001 ##### Initializing The Variables ##### m=0 n=0 p=0 Q=0 MORE=0 LESS=0 EXT_PATH="/users/dcmgr" SCP_PATH="/users/compaq/reports" APATH="/oracle/app/oracle/admin/tba/bdump" for i in `cat /users/compaq/reports/app.ps | grep cdci | grep -v grep | grep -v \`date +%h\` | cut -c '51-61' | awk -F: '{print $1}'` do if [ $i -gt 1 ] then m=`expr $m + 1` MORE=`echo $m` else n=`expr $n + 1` LESS=`echo $n` fi done for k in `cat /users/compaq/reports/app.ps | grep -v root | awk '{print $3}' | grep -v CPU | awk -F '.' '{print $1}'` do if [ $k -gt 70 ] then p=`expr $p + 1` Q=`echo $p` fi done ##### Getting Counts For RBBMGR and DEFUNCT Processes ###### DEFUNC=`cat /users/compaq/reports/app.ps | grep "defunc" | grep -v grep | wc -l | awk '{print $1}'` RBBMGR=`cat /users/compaq/reports/app.ps | grep "rbbmgr" | grep -v grep | wc -l | awk '{print $1}'` ##### Displaying Messages To DCMGR Login About Process Statistics ##### if [ $MORE -ne 0 ] then for j in `w | grep dcmgr | awk '{print $2}'` do echo "\n" > /dev/$j echo "APP CDCI NOTICE - ($MORE) Process(es) running more than 1 Hr & less than 24 Hrs." > /dev/$j echo "APP DEFUNC NOTICE - ($DEFUNC) Process(es) are present." > /dev/$j if [ $RBBMGR -gt 49 ] then echo "APP RBBMGR NOTICE - ($RBBMGR) Process(es) are present." > /dev/$j fi OLD=`cat /users/compaq/reports/app.ps | grep cdci | grep -v grep | grep \`date +%h\` | wc -l | awk '{print $1}'` if [ $Q -ne 0 ] then echo "APP USERS NOTICE - ($Q) Process(es) CPU utilization is more than 70% " > /dev/$j fi ##### Displaying Status About GS320DB Server ###### DBMSG=`cat /users/compaq/reports/dbmon.log` echo "$DBMSG" > /dev/$j ##### Displaying DF Status To DCMGR ##### df -k | grep -v "boot" | grep -v "proc" | grep -v "Capacity" | sort -k 6 > df.txt cat df.txt | awk '{print $6}' > $SCP_PATH/FS cat df.txt | awk '{print $5}' | sed -e s/%//g > $SCP_PATH/SZ cat $SCP_PATH/DFORG | grep -v "EXTENDS" | awk '{print $1}'| sort > $SCP_PATH/DFORGFS diff $SCP_PATH/FS $SCP_PATH/DFORGFS 1>/dev/null 2>/dev/null if [ $? -ne 0 ] then echo "DFORG Inconsistancy : Please Re-check The DFORG File." > /dev/$j else cat $SCP_PATH/DFORG | grep -v "EXTENDS" | awk '{print $2}' > $SCP_PATH/ORG pr -m -t $SCP_PATH/FS $SCP_PATH/SZ $SCP_PATH/ORG > $SCP_PATH/TO for o in `cat $SCP_PATH/FS` do if [ "`cat $SCP_PATH/TO | grep -w $o | awk '{print $2}'`" -ge "`cat $SCP_PATH/TO | grep -w $o | awk '{print $3}' `" ] then echo "DF NOTICE - File System ($o) has reached (`cat $SCP_PATH/TO | grep -w $o | awk '{print $2}'`%)" > /dev/$j fi done fi ##### Displaying Alert Logs to DCMGR ###### ACNT=`cat $APATH/alert_tba.log | grep "ORA-" | wc -l | awk '{print $1}'` if [ $ACNT -gt 0 ] then echo "ORA NOTICE - There has been ($ACNT) entries of ORA errors" > /dev/$j echo "`cat $APATH/alert_tba.log | grep "ORA-"`" > /dev/$j else echo "ORA NOTICE - There are no ORA errors" > /dev/$j fi ##### Displaying Extends Status To DCMGR ##### cat $EXT_PATH/70_threshold.lst | awk '{print $1,$2,"("$3")","("$4")","Reached"}' > /dev/$j echo "Press any key to continue ........" > /dev/$j done fi ##### Cleaning Up The Mess ###### rm $SCP_PATH/FS $SCP_PATH/SZ $SCP_PATH/TO $SCP_PATH/ORG $SCP_PATH/DFORGFS \ $SCP_PATH/extno $SCP_PATH/extot $SCP_PATH/EXTSTAT 1>/dev/null 2>/dev/null