SOURCES: cacti-plugin-snmp_tcp_connection_status.sh - filter with awk
glen
glen at pld-linux.org
Wed Jan 21 15:10:30 CET 2009
Author: glen Date: Wed Jan 21 14:10:30 2009 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- filter with awk
---- Files affected:
SOURCES:
cacti-plugin-snmp_tcp_connection_status.sh (1.1 -> 1.2)
---- Diffs:
================================================================
Index: SOURCES/cacti-plugin-snmp_tcp_connection_status.sh
diff -u SOURCES/cacti-plugin-snmp_tcp_connection_status.sh:1.1 SOURCES/cacti-plugin-snmp_tcp_connection_status.sh:1.2
--- SOURCES/cacti-plugin-snmp_tcp_connection_status.sh:1.1 Wed Jan 21 14:48:00 2009
+++ SOURCES/cacti-plugin-snmp_tcp_connection_status.sh Wed Jan 21 15:10:24 2009
@@ -1,32 +1,29 @@
-#/bin/bash
+#!/bin/sh
# get number of tcp connection
# $1 = hostname
# $2 = snmp community
# lots of ways to do this with more style... ;)
# jbrooks at oddelement.com
+#
+# modified by Elan Ruusamäe <glen at pld-linux.org>
-CACTIDIR=/var/www/htdocs/cacti/scripts
TMPDIR=/tmp
-cd $CACTIDIR
-
-
-snmpnetstat -v 2c -c $2 -Can -Cp tcp $1 > $TMPDIR/$1
-
-ESTABLISHED=`grep ESTABLISHED $TMPDIR/$1 |wc -l`
-LISTENING=`grep LISTEN $TMPDIR/$1 |wc -l`
-TIME_WAIT=`grep TIMEWAIT $TMPDIR/$1 |wc -l`
-TIME_CLOSE=`grep TIMECLOSE $TMPDIR/$1 |wc -l`
-FIN1=`grep FINWAIT1 $TMPDIR/$1 |wc -l`
-FIN2=`grep FINWAIT2 $TMPDIR/$1 |wc -l`
-SYNSENT=`grep SYNSENT $TMPDIR/$1 |wc -l`
-SYNRECV=`grep SYNRECV $TMPDIR/$1 |wc -l`
-
-echo -n established:${ESTABLISHED} listen:${LISTENING} time_wait:${TIME_WAIT} time_close:${TIME_CLOSE} syn_sent:${SYNSENT} fin_wait1:${FIN1} fin_wait2:${FIN2} syn_recv:${SYNRECV}
-
-# uncomment for debugging:
-# echo $1: established:$ESTABLISHED listen:$LISTENING time_wait:$TIME_WAIT time_close:$TIME_CLOSE syn_sent:$SYN fin_wait1:$FIN1 fin_wait2:$FIN2 >> $TMPDIR/tcp.log
-
-# may want to comment this for debugging too
-rm $TMPDIR/$1
+snmpnetstat -v 2c -c "$2" -Can -Cp tcp "$1" | awk '
+ $1 == "tcp" {
+ ss[$4]++;
+ }
+
+ END {
+ # socket states from net-snmp-5.4.2.1/apps/snmpnetstat/inet.c
+ split("CLOSED LISTEN SYNSENT SYNRECEIVED ESTABLISHED FINWAIT1 FINWAIT2 CLOSEWAIT LASTACK CLOSING TIMEWAIT", t, " ");
+ # create mapping (duh, why there are different data names used?)
+ # XXX TIMECLOSE missing
+ split("closed listen syn_sent syn_recv established fin_wait1 fin_wait2 closewait lastack closing time_wait", m, " ");
+ for (i in t) {
+ s = t[i];
+ k = m[i];
+ printf("%s:%d ", k, ss[s]);
+ }
+}'
================================================================
---- CVS-web:
http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/SOURCES/cacti-plugin-snmp_tcp_connection_status.sh?r1=1.1&r2=1.2&f=u
More information about the pld-cvs-commit
mailing list