User Tools

Site Tools


aix:scripts_category:nagios_aix_checksys

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
aix/scripts_category/nagios_aix_checksys.txt · Last modified: 2021/01/01 21:25 (external edit)