#!/bin/bash
# $1 = hostname
# $2 = community
# $3 = TCP state
# $4 = TCP port
# ExternalParameter = TCP.Connections(*):/opt/netxms/scripts/snmp_stat.sh $1 $2 $3 $4

TMPDIR=/tmp
STATEDIR=$TMPDIR/$1
STATEFILE=$TMPDIR/$1/$2

if [ ! -e $STATEDIR ]
then
  mkdir $STATEDIR
fi

if [ ! -e $STATEFILE ]
then
 touch $STATEFILE
 snmpnetstat -v 2c -c $2 -Can -Cp tcp $1 > $STATEFILE
fi

REFRESH=`find $STATEFILE -mmin +1`

if [ "$REFRESH" == "$STATEFILE" ]
 then
 snmpnetstat -v 2c -c $2 -Can -Cp tcp $1 > $STATEFILE
fi

case "$3" in
  "ESTABLISHED" )
  if [ $4 > 0 ]; then
    echo `cat $STATEFILE |grep $1.$4 |grep $3 |wc -l`
   else
    echo `grep $3 $STATEFILE |wc -l`
  fi
  ;;
  "LISTEN" )
  if [ $4 > 0 ]; then
    echo `cat $STATEFILE |grep *.$4 |grep $3 |wc -l`
   else
    echo `grep $3 $STATEFILE |wc -l`
  fi
  ;;
  "TIMEWAIT" )
  echo `grep $3 $STATEFILE |wc -l`
  ;;
  "TIMECLOSE" )
  echo `grep $3 $STATEFILE |wc -l`
  ;;
  "FINWAIT1" )
  echo `grep $3 $STATEFILE |wc -l`
  ;;
  "FINWAIT2" )
  echo `grep $3 $STATEFILE |wc -l`
  ;;
  "SYNSENT" )
  echo `grep $3 $STATEFILE |wc -l`
  ;;
  "SYNRECV" )
  echo `grep $3 $STATEFILE |wc -l`
  ;;
  * )
  echo "P3 must be: ESTABLISHED | LISTEN | TIMEWAIT | TIMECLOSE | FINWAIT1 | FINWAIT2 | SYNSENT | SYNRECV"
  ;;
esac

