Misc check on AIX system
[root@aixna001] /root> cat scripts/check_sys.sh
#!/usr/bin/ksh
#set -x
#
#@(#) send an alert if many check
#
# version: 1.1 16-03-2011 Manu
# ssh bootlist disk path .rhosts
#
dir=`dirname $0`
. $dir/.env
tmpfile=$logpath/tmp.$$
# Specific for each environment
DSH_NODE_LIST=/root/.ssh/.dsh_node_list
DSH_NODE_RSH=/usr/bin/ssh
export DSH_NODE_LIST DSH_NODE_RCP DSH_NODE_RSH DCP_NODE_RCP
path_script=/root/scripts
dest=$destination
BINDSH=/usr/bin/dsh
numberpath=8
swap=30 # if swap higher than 30% then error
#------------------------------------------------
check_ssh()
{
# test ssh connexion
$BINDSH 'ls ' 2> $tmpfile 1>/dev/null
cat $tmpfile
}
#------------------------------------------------
check_bootlist()
{
# Check only on LPARs, not WPARs
DSH_NODE_LIST=/root/.ssh/.dsh_lpar_list
$BINDSH '/usr/bin/bootlist -m normal -o | grep -v blv' 2>/dev/null
}
#------------------------------------------------
check_diskpath()
{
#$BINDSH "$path_script/change_devices_param.sh | grep '!!! FIX. ' " 2>/dev/null
#$BINDSH '/usr/sbin/lspath | egrep -vi "enable|available"' 2>/dev/null
$BINDSH '/usr/sbin/lspath' | sed 's/\ /;/g' | sed 's/://' > $tmpfile
cat $tmpfile | egrep -vi "enable|available"
cat $tmpfile | grep hdisk | awk -F';' '{print $1";"$3";"}' | sort > $tmpfile.1
mv $tmpfile.1 $tmpfile
for line in $(cat $tmpfile | sort -u)
do
echo $(cat $tmpfile | grep "$line" | wc -l | awk '{print $1}')";$line WRONG NUMBER OF PATHs, expected: $numberpath" | grep -v "^$numberpath;"
done
}
#------------------------------------------------
check_var()
{
$BINDSH 'df /var | grep hd9var' | awk '{print $5";"$1}' | sed 's/\%//' | egrep '^1..;|^9.;'
}
#------------------------------------------------
check_rhosts()
{
$BINDSH 'ls -l ~root/.rhost* /.rhosts 2> /dev/null' 2>/dev/null
$BINDSH 'ls -l /.rhost* 2> /dev/null' 2>/dev/null
}
#------------------------------------------------
check_adapt()
{
$BINDSH 'lsdev -Cc adapter | grep Defined | grep -v pkcs11'
}
#------------------------------------------------
check_sendmail()
{
$BINDSH 'grep "^DSsmtp" /etc/sendmail.cf > /dev/null 2>&1; echo $?' 2> /dev/null | sed 's/\ //g' > $tmpfile
for line in $(cat $tmpfile | grep "1")
do
end=$(echo $line | cut -d: -f2)
if [ $end -ne 0 ]
then
echo $line | cut -d: -f1
fi
done
#$BINDSH 'grep "^Djmydom.lu" /etc/sendmail.cf > /dev/null 2>&1; echo $?' 2> /dev/null | sed 's/\ //g' > $tmpfile
#for line in $(cat $tmpfile | grep "1")
#do
# end=$(echo $line | cut -d: -f2)
# if [ $end -ne 0 ]
# then
# echo $line | cut -d: -f1
# fi
#done
}
#------------------------------------------------
check_crontab()
{
$BINDSH 'cat /var/spool/cron/crontabs/root | grep -v "^#" | grep "pmcfg"' > $tmpfile 2>&1
cat $tmpfile | grep -vi 'Cannot'
$BINDSH 'cat /var/spool/cron/crontabs/esaadmin | grep -v "^#"' > $tmpfile 2>&1
cat $tmpfile | grep -vi 'Cannot'
}
#------------------------------------------------
check_pathvios()
{
$path_script/dshvio lspath > $tmpfile
for line in $(cat $tmpfile | egrep -v "^Available|^status|^Enabled" | sed '/^$/d' | egrep "VIO|hdisk" | awk '{print $1";"$2";"$3";"$4}')
do
if [ $(echo $line | grep -q '^VIO'; echo $?) -eq 0 ]
then
vioname=$(echo $line | cut -d';' -f4)
else
echo "$vioname: $line" | sed 's/;/\ /g'
fi
done
}
#------------------------------------------------
check_mirror()
{
$BINDSH "$path_script/check_mirror.sh"
$path_script/dshvio -r 'lsvg -o | xargs lsvg | grep STALE ' > $tmpfile
cat $tmpfile | egrep '^VIO|^STALE' | rev | awk '{print $1}' | rev | paste - - | while read i j
do
if [ "$j" -ne "0" ]
then
echo "$i $j"
fi
done
}
#------------------------------------------------
check_xntpd()
{
$BINDSH 'lssrc -s xntpd | grep -q active; echo $?' | grep -v '\ 0'
$BINDSH 'lssrc -ls xntpd | grep "Leap indicator"' | egrep -v "No leap second today"
}
#------------------------------------------------
check_lpp()
{
$BINDSH 'lppchk -v' 2> $tmpfile 1>/dev/null
cat $tmpfile
}
#------------------------------------------------
check_swap()
{
$BINDSH lsps -a | grep hdisk | awk '{print $6,$1}' > $tmpfile
cat $tmpfile | while read val host1
do
if [ "$val" -gt "$swap" ]
then
echo "$host1 $val %"
fi
done
}
#------------------------------------------------
check_logrotate()
{
$BINDSH 'find /var/log -name "logrotate.log" \( ! -size 0 -o -mtime +1 \) -ls;! test -f /var/log/logrotate.log && echo "*** Not found /var/log/logrotate.log"'
}
#
#
# main ()
#
#
main ()
{
for chk in ssh bootlist diskpath rhosts adapt sendmail pathvios crontab mirror xntpd lpp var swap logrotate
do
varchk=$(check_$chk)
if [ "$varchk" <> "" ]
then
date
case "$chk" in
ssh) echo "**************"
echo "SSH problem"
echo "**************"
echo "${varchk} \n";;
bootlist) echo "**************"
echo "bootlist no correctly set"
echo "**************"
echo "${varchk} \n";;
diskpath) echo "**************"
echo "disk path problem"
echo "**************"
echo "${varchk} \n";;
rhosts) echo "**************"
echo ".rhosts exists on partition"
echo "**************"
echo "${varchk} \n";;
adapt) echo "**************"
echo "adapter defined on partition"
echo "**************"
echo "${varchk} \n";;
sendmail) echo "**************"
echo "Check /etc/sendmail.cf"
echo "**************"
echo "${varchk} \n";;
crontab) echo "**************"
echo "Check crontab for root and esaadmin"
echo "**************"
echo "${varchk} \n";;
pathvios) echo "**************"
echo "Check disk paths on VIOS"
echo "**************"
echo "${varchk} \n";;
var) echo "**************"
echo "Check /var FULL !!!"
echo "**************"
echo "${varchk} \n";;
mirror) echo "**************"
echo "Check VG not synchronized or bad number of copies!!!"
echo "**************"
echo "${varchk} \n";;
xntpd) echo "**************"
echo "Check XNTPD daemon, time not synchronized"
echo "${varchk} \n";;
lpp) echo "**************"
echo "lpp check problem"
echo "${varchk} \n";;
swap) echo "**************"
echo "Swap too high"
echo "${varchk} \n";;
logrotate) echo "**************"
echo "logrotate check problem"
echo "**************"
echo "${varchk} \n";;
esac
fi
done
test -e $tmpfile && rm $tmpfile*
}
main > $logname 2>/dev/null
test -s $logname && cat $logname | mailx -s "WARNING from $(hostname -s) script name: $sn.sh" $dest