#!/bin/ksh
#
# XARY aka Andrei.Ryjov@spasu.net       Tue Dec 23 12:16:15 CET 2008
#
# check if "df" command on AIX gives "permission" on stdin
#
Excludes="

  alaris-cor    /export/backup
  alaris-cor    /export/sybdata
  alaris-cor    /export/soft

  titi-cor      /export/backup
  titi-cor      /export/sybasedata
  titi-cor      /export/soft

  fox           /export/backup
  fox           /export/sybasedata
  fox           /export/soft

  renard        /export/backup
  renard        /export/sybasedata
  renard        /export/soft

  fix-cor       /export/data
  fix-cor       /export/soft

  swx-test      /export         # need to investigate, why "no" in vfstab

  imtfex1-cor   /imtf/prog
  imtfex1-cor   /imtf/dblog
  imtfex1-cor   /imtf/database
  imtfex1-cor   /imtf/localdisk

"

HOST=`uname -n`

ME=`basename $0`
cd /var/tmp || exit 1

case `uname` in
  AIX)
    lsfs | awk '$(NF-1)=="yes" {print $3}'               | sort >$ME.Listed
    mount | sed 's:^[^/]*::' | awk '$2~/^\// {print $2}' | sort >$ME.Mounted
    ;;
  SunOS)
    cat /etc/vfstab | awk '$1!~/^#/ && $4~/ufs|vxfs/ {print $3}' | sort >$ME.Listed
    for i in `cat $ME.Listed`; do mount | awk '$1=="'$i'" {print $1}'; done | sort >$ME.Mounted
    ;;

esac

MESSAGE=`diff $ME.Listed $ME.Mounted | awk '$1=="<" {print $2}' | sort -u`

Excludes=`echo "$Excludes" | awk '$1=="*"  || $1=="'$HOST'" {print $2}' | sort -u`

#
# We get count=3 if FS is in both MESSAGE and Excludes,
# and count=1 if FS is in Excludes only
# So, we only care about count=2
#
MESSAGE=`printf "$MESSAGE\n$MESSAGE\n$Excludes\n" | sed '/^ *$/d' | sort | uniq -c | awk '$1==2 {print $2}'`

[ `echo "$MESSAGE" | wc -w` -lt 1 ] && exit 0

printf "Missing mounts - fstab vs. df inconsistence\n\n$MESSAGE\n"
exit 1

