summaryrefslogtreecommitdiff
path: root/scripts/show_interfaces_statistics
diff options
context:
space:
mode:
authorTom Grennan <tgrennan@vyatta.com>2007-09-17 17:04:09 -0700
committerTom Grennan <tgrennan@vyatta.com>2007-09-17 17:04:09 -0700
commitee7a0bb124bf9b33e3263c3330fccba98f3d0189 (patch)
tree2618a8da31c15b20656f1d17672124705c57e499 /scripts/show_interfaces_statistics
parent796460d8696981a26c4ad271b9ce2e1962aa23fc (diff)
downloadvyatta-op-ee7a0bb124bf9b33e3263c3330fccba98f3d0189.tar.gz
vyatta-op-ee7a0bb124bf9b33e3263c3330fccba98f3d0189.zip
add show_interfaces scripts
Diffstat (limited to 'scripts/show_interfaces_statistics')
-rwxr-xr-xscripts/show_interfaces_statistics123
1 files changed, 123 insertions, 0 deletions
diff --git a/scripts/show_interfaces_statistics b/scripts/show_interfaces_statistics
new file mode 100755
index 0000000..40870cc
--- /dev/null
+++ b/scripts/show_interfaces_statistics
@@ -0,0 +1,123 @@
+#!/bin/bash
+# **** License ****
+# Version: VPL 1.0
+#
+# The contents of this file are subject to the Vyatta Public License
+# Version 1.0 ("License"); you may not use this file except in
+# compliance with the License. You may obtain a copy of the License at
+# http://www.vyatta.com/vpl
+#
+# Software distributed under the License is distributed on an "AS IS"
+# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+# the License for the specific language governing rights and limitations
+# under the License.
+#
+# This code was originally developed by Vyatta, Inc.
+# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc.
+# All Rights Reserved.
+#
+# Author: Tom Grennan
+# Date: 2007
+#
+# **** End License ****
+
+shopt -s extglob
+shopt -s nullglob
+
+declare progname=${0##*/}
+declare -a full_itfs=( /sys/class/net/+(eth|vmnet|wan|sit|lo)* )
+declare -a itfs
+declare -i rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast
+declare -i tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors collisions
+declare -i rx_missed_errors rx_fifo_errors
+
+_usage ()
+{
+ cat <<-EOF
+ $progname [ INTERFACE ]
+ EOF
+}
+
+_error ()
+{
+ ecode=$1
+ shift
+ echo $@
+ if [ $ecode -eq 1 ] ; then
+ echo
+ _usage
+ fi
+ exit $ecode
+}
+
+if [ $# -gt 0 ] ; then
+ if [[ $1 == --+(usage|help) ]] ; then
+ _usage
+ exit 0
+ else
+ itfs=( $@ )
+ fi
+else
+ itfs=( ${full_itfs[@]##*/} )
+fi
+
+for itf in ${itfs[@]} ; do
+ test -d /sys/class/net/$itf || \
+ _error 2 $itf: no such interface\!
+ for stat in \
+ rx_bytes rx_packets rx_errors rx_dropped rx_over_errors multicast \
+ tx_bytes tx_packets tx_errors tx_dropped tx_carrier_errors collisions
+ do
+ full_stat=/sys/class/net/${itf}/statistics/${stat}
+ if [ -r $full_stat ] ; then
+ eval $stat=$(cat $full_stat)
+ else
+ eval $stat=0
+ fi
+ done
+ for stat in rx_missed_errors ; do
+ full_stat=/sys/class/net/${itf}/statistics/${stat}
+ if [ -r $full_stat ] ; then
+ let $(( rx_dropped_errors += $(cat $full_stat) ))
+ fi
+ done
+ for stat in rx_fifo_errors ; do
+ full_stat=/sys/class/net/${itf}/statistics/${stat}
+ if [ -r $full_stat ] ; then
+ let $(( rx_over_errors += $(cat $full_stat) ))
+ fi
+ done
+
+ printf -v rx_stats \
+ '%10d %10d %10d %10d %10d %10d' \
+ $rx_bytes \
+ $rx_packets\
+ $rx_errors \
+ $rx_dropped \
+ $rx_over_errors \
+ $multicast
+
+ printf -v tx_stats \
+ '%10d %10d %10d %10d %10d %10d' \
+ $tx_bytes \
+ $tx_packets\
+ $tx_errors \
+ $tx_dropped \
+ $tx_carrier_errors \
+ $collisions
+
+ ip -s addr show ${itf} | sed 's/^[0-9]*: //'
+ cat <<-EOF
+
+ RX: bytes packets errors dropped overrun mcast
+ $rx_stats
+ TX: bytes packets errors dropped carrier collisions
+ $tx_stats
+
+ EOF
+done
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 4
+# End: