#! /bin/sh
#
# slist - a passive version of the novell slist command
#         Brett Wynkoop (wynkoop@bsdi.com) 97/09/05
#
# modification history 
#  98/04/10 check for and only display info on file servers (service number 4)
#           wynkoop@bsdi.com
#
PATH=/usr/ucb:/usr/contrib/bin:/usr/bin:/bin:/usr/sbin
MYNAME=`basename $0`
WHO=`whoami`

usage()
{
   echo
   echo "USAGE: $MYNAME [-c number_of_broadcasts ] [-i interface_to_listen_on]"
   echo
   exit 1
}

while getopts h?i:c: OPTION
do
     case "$OPTION"
     in

        i) IFACE="$OPTARG";;
        c) COUNT="$OPTARG";;
        h|?) usage;;
     esac
done

if [ x$WHO != xroot ]
then
   echo
   echo "$MYNAME: You must be root to run $MYNAME"
   echo
   exit 1
fi
if [ x$IFACE = x ]
then
     INTERFACE=`netstat -ni | grep -v Name | head -1 | cut -d" " -f1`
else
     INTERFACE=$IFACE
fi

if [ x$COUNT = x ]
then
     COUNT=10
fi

if [ $COUNT -le 0 ]
then
     COUNT=10
fi

tcpdump -t -c $COUNT -l -i $INTERFACE broadcast | gawk ' $3 ~ /ipx-sap-general-resp/  && $4 ~ /4/ {

 HOST=sprintf("%s",$5 )
 NETADDR=sprintf("%s",$1 )
 gsub(".452$"," ",NETADDR) 
 gsub("\047","",HOST)
 gsub(/\./,"		",NETADDR)
 printf("%s		%s\n",HOST,NETADDR)
}' | sort -u
