#START
# Global variables/functions ----------------------------------------------
version=4.0
name=$(echo $0 | cut -c 3-)
mainDIR="$name-$(hostname)-$(date +%H%M%d%m%Y)"
rootDir=$(pwd)
stty_old=$(stty -g)
trap 'wrapper' 1 2 3 15
cleanuptemp()
{
rm -r $mainDIR
kill -9 $kdbpid > /dev/null 2> /dev/null
}
#******************** SIG_TERM Trap Handler *******************************
wrapper() {
echo "User terminated Adepto at $date" >> $mainDIR/AdeptoLOG
#stty $stty_old
echo ""
echo Premature termination of Adepto detected. Finalizing...
tar cf $mainDIR.tar $mainDIR/
gzip --best $mainDIR.tar
cleanuptemp
echo "Partial file generated: $mainDIR.tar.gz"
echo ""
exit 1
} 2> /dev/null
#**************************************************************************
set -A Spinner 10 20 30 40 50 60 70 80 90 100
Spinnerpos=0
update_spinner()
{
printf ${Spinner[$Spinnerpos]}
printf "\% complete"
(( Spinnerpos=(Spinnerpos +1)%10 ))
}
#--------------------------------------------------------------------------
mkdir $mainDIR
touch $mainDIR/AdeptoLOG
echo "Adepto run on $(date)" > $mainDIR/AdeptoLOG
echo
echo Starting $name ...
echo Time to complete will vary depending on system configuration and age.
echo
if [ $1 = "-mp" ] 2> /dev/null
then
echo "Gathering MP/GSP details" >> $mainDIR/AdeptoLOG
echo "Running MP extended mode"
echo "MP/GSP Username and Password is usually Admin/Admin or Oper/Oper"
echo ""
echo "MP/GSP IP address: \c"; read ipaddr
userStr=$(echo $ipaddr | sed -e "s/[0-9]//g" | sed -e "s/\.//g" | sed -e "s/ //g")
until [ $(echo $ipaddr | sed -e "s/\.\./\*\*/g" | grep "\*\*" | wc -l ) -lt "1" -a $(echo $userStr | wc -c) -eq "1" -a $(echo $ipaddr | sed -e "s/[0-9]//g" | wc -c) -eq "4" ]
do
echo "Invalid IP address. IPv4 addresses only. Please try again."
echo "MP/GSP IP address: \c"; read ipaddr
userStr=$(echo $ipaddr | sed -e "s/[0-9]//g" | sed -e "s/\.//g" | sed -e "s/ //g")
done
echo "Username: \c"; read user
stty -echo
echo "Password: \c"; read pass
stty $stty_old
echo ""
fi
crashinfo()
{
crashDir=$(ls -d /var/adm/crash/cra* | tail -1)
absPath=$(echo $PWD)
echo $absPath
cd $crashDir
zcat /usr/contrib/lib/Q4Lib.tar.Z | tar -xvf -
/usr/contrib/bin/gunzip vmunix.gz
/usr/contrib/bin/q4pxdb vmunix
cp /usr/contrib/lib/Q4/sample.q4rc.pl ~/.q4rc.pl
/usr/contrib/bin/q4 -p << EOF
include analyze.pl
trace event 0
run Analyze AU > $absPath/$mainDIR/CRASH/Q4Analysis.out
include whathappened.pl
run WhatHappened > $absPath/$mainDIR/CRASH/Q4WhatHappened.out
EOF
cd $absPath
tar cf $mainDIR/CRASH/Q4Analysis.out.tar $mainDIR/CRASH/Q4Analysis.out
gzip $mainDIR/CRASH/Q4Analysis.out.tar
rm $mainDIR/CRASH/Q4Analysis.out.tar
rm $mainDIR/CRASH/Q4Analysis.out
rm -r q4lib
rm .q4_hist
} > /dev/null 2> /dev/null
if [ $(ls -1 /var/adm/crash | wc -l) -gt "0" ] > /dev/null
then
mkdir $mainDIR/CRASH
if [ $1 = "-c" ] 2> /dev/null
then
echo Running Crash Analysis
crashinfo
fi
else
mkdir $mainDIR/CRASH
fi
date > $mainDIR/Sys_Info
ioscanSummary()
{
echo "Summarizing IO scan" >> $mainDIR/AdeptoLOG
echo Ioscan Summary > $mainDIR/Summary
echo >> $mainDIR/Summary
cat $mainDIR/Hardware/Ioscan-fn | grep -i no_hw >> $mainDIR/Summary
cat $mainDIR/Hardware/Ioscan-fn | grep -i unclaimed >> $mainDIR/Summary
echo ----------------------------------------------------------------------------------------------------- >> $mainDIR/Summary
echo >> $mainDIR/Summary
}
syslogSummary()
{
echo "Summarizing Syslog and Syslog.OLD" >> $mainDIR/AdeptoLOG
echo Syslog.log Summary >> $mainDIR/Summary
echo >> $mainDIR/Summary
cat $mainDIR/Logs/Syslog | grep -i -e fail -e unable>> $mainDIR/Summary
cat $mainDIR/Logs/Syslog | grep -i error >> $mainDIR/Summary
cat $mainDIR/Logs/Syslog | grep -i "not responding" >> $mainDIR/Summary
echo >> $mainDIR/Summary
echo ----------------------------------------------------------------------------------------------------- >> $mainDIR/Summary
echo OLDSyslog.log Summary >> $mainDIR/Summary
cat $mainDIR/Logs/OLDSyslog | grep -i -e fail -e unable>> $mainDIR/Summary
cat $mainDIR/Logs/OLDSyslog | grep -i error>> $mainDIR/Summary
cat $mainDIR/Logs/OLDSyslog | grep -i "not responding" >> $mainDIR/Summary
echo >> $mainDIR/Summary
}
ifroot()
{
if [[ $(id -un) != root ]]
then
echo "ADEPTO IS BEING RUN WITHOUT ROOT PRIVILEGES" >> $mainDIR/AdeptoLOG
echo "This account does not have root privileges."
echo "This was run without root privileges" > $mainDIR/warnings
fi
}
ifroot
createHTML()
{
echo "Creating HTML" >> $mainDIR/AdeptoLOG
cd $mainDIR
mkdir HTML
echo "
" >> HTML/Blank.html
echo "