===== 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