diff options
author | Tom Grennan <tgrennan@vyatta.com> | 2007-09-17 17:04:09 -0700 |
---|---|---|
committer | Tom Grennan <tgrennan@vyatta.com> | 2007-09-17 17:04:09 -0700 |
commit | ee7a0bb124bf9b33e3263c3330fccba98f3d0189 (patch) | |
tree | 2618a8da31c15b20656f1d17672124705c57e499 | |
parent | 796460d8696981a26c4ad271b9ce2e1962aa23fc (diff) | |
download | vyatta-op-ee7a0bb124bf9b33e3263c3330fccba98f3d0189.tar.gz vyatta-op-ee7a0bb124bf9b33e3263c3330fccba98f3d0189.zip |
add show_interfaces scripts
-rw-r--r-- | Makefile.am | 8 | ||||
-rwxr-xr-x | scripts/show_interfaces | 74 | ||||
-rwxr-xr-x | scripts/show_interfaces_ethernet | 112 | ||||
-rwxr-xr-x | scripts/show_interfaces_loopback | 76 | ||||
-rwxr-xr-x | scripts/show_interfaces_statistics | 123 | ||||
-rwxr-xr-x | scripts/show_interfaces_summary | 55 | ||||
-rwxr-xr-x | scripts/show_interfaces_system | 75 | ||||
-rwxr-xr-x | scripts/show_interfaces_tunnel | 76 |
8 files changed, 599 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am index 83419df..87c323d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,14 @@ completiondir = /etc/bash_completion.d completion_DATA = etc/bash_completion.d/vyatta-op opdir = $(datadir)/vyatta-op/templates +bin_SCRIPTS = scripts/show_interfaces +bin_SCRIPTS += scripts/show_interfaces_ethernet +bin_SCRIPTS += scripts/show_interfaces_loopback +bin_SCRIPTS += scripts/show_interfaces_statistics +bin_SCRIPTS += scripts/show_interfaces_summary +bin_SCRIPTS += scripts/show_interfaces_system +bin_SCRIPTS += scripts/show_interfaces_tunnel + cpiop = find . ! -regex '\(.*~\|.*\.bak\|.*\.swp\|.*\#.*\#\)' -print0 | \ cpio -0pd diff --git a/scripts/show_interfaces b/scripts/show_interfaces new file mode 100755 index 0000000..1a8d804 --- /dev/null +++ b/scripts/show_interfaces @@ -0,0 +1,74 @@ +#!/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 **** + +test -f /etc/default/vyatta && source /etc/default/vyatta +: ${vyatta_bindir:=/opt/vyatta/bin} + +shopt -s extglob +shopt -s nullglob + +declare progname=${0##*/} +declare -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* ) +declare -a itfs + +_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 + elif [[ $1 != +(eth|vmnet|lo|sit|wan)* ]] ; then + _error 2 \""$1"\" is not an interface name\! + elif ! test -d /sys/class/net/$1 ; then + _error 2 $1: no such interface\! + else + itfs=( $1 ) + shift + fi +else + itfs=( ${full_itfs[@]##*/} ) +fi + +$vyatta_bindir/show_interfaces_statistics ${itfs[@]} + +# Local Variables: +# mode: shell-script +# sh-indentation: 4 +# End: diff --git a/scripts/show_interfaces_ethernet b/scripts/show_interfaces_ethernet new file mode 100755 index 0000000..d592018 --- /dev/null +++ b/scripts/show_interfaces_ethernet @@ -0,0 +1,112 @@ +#!/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 **** + +test -f /etc/default/vyatta && source /etc/default/vyatta +: ${vyatta_bindir:=/opt/vyatta/bin} + +shopt -s extglob +shopt -s nullglob + +declare progname=${0##*/} +declare -a itfs + +_usage () +{ + cat <<-EOF + $progname + $progname INTERFACE + $progname INTERFACE physical + $progname INTERFACE vif VIF + $progname INTERFACE vif VIF physical + EOF +} + +_error () +{ + ecode=$1 + shift + echo $@ + if [ $ecode -eq 1 ] ; then + echo + _usage + fi + exit $ecode +} + +_show_interfaces_ethernet_physical () +{ + if type -t ethtool &>/dev/null ; then + for eth ; do + sudo ethtool $eth + echo + done + fi +} + +if [ $# -gt 0 ] ; then + if [[ $1 == --+(usage|help) ]] ; then + _usage + exit 0 + elif [[ $1 != +(eth|vmnet)*([[:digit:]]) ]] ; then + _error 2 \""$1"\" is not an ethernet device name\! + elif ! test -d /sys/class/net/$1 ; then + _error 2 \""$1"\" no such ethernet interface\! + else + eth=$1 + shift + fi + if [[ $# -gt 0 && $1 == vif ]] ; then + shift + if [ $# -gt 0 ] ; then + vif=$1 ; shift + itf=${eth}.${vif} + test -d /sys/class/net/$itf || \ + _error 2 \""$vif"\" no such vif for $eth\! + else + _error 1 Missing VIF parameter\! + fi + else + itf=$eth + fi + itfs=( $itf ) +else + declare -a full_eths=( /sys/class/net/+(eth|vmnet)* ) + test ${#full_eths[@]} -gt 0 || \ + _error 2 No ethernet interfaces\! + itfs=( ${full_eths[@]##*/} ) +fi + +case "$1" in + physical ) cmd=_show_interfaces_ethernet_physical ;; + "" | statistics ) cmd=$vyatta_bindir/show_interfaces_statistics ;; + name ) cmd=echo ;; + * ) _error 1 \""$1"\" is an invalid parameter\! ;; +esac + +eval $cmd ${itfs[@]##*/} + + +# Local Variables: +# mode: shell-script +# sh-indentation: 4 +# End: diff --git a/scripts/show_interfaces_loopback b/scripts/show_interfaces_loopback new file mode 100755 index 0000000..ab1bb5d --- /dev/null +++ b/scripts/show_interfaces_loopback @@ -0,0 +1,76 @@ +#!/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 **** + +test -f /etc/default/vyatta && source /etc/default/vyatta +: ${vyatta_bindir:=/opt/vyatta/bin} + +shopt -s extglob +shopt -s nullglob + +declare progname=${0##*/} +declare -a itfs + +_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 + elif [[ $1 != lo* ]] ; then + _error 2 \""$1"\" is not a loopback device name\! + elif ! test -d /sys/class/net/$1 ; then + _error 2 $1: no such loopback interface\! + else + itfs=( $1 ) + shift + fi +else + declare -a full_los=( /sys/class/net/lo* ) + test ${#full_los[@]} -gt 0 || \ + _error 2 No loopback interfaces\! + itfs=( ${full_los[@]##*/} ) +fi + +$vyatta_bindir/show_interfaces_statistics ${itfs[@]} + +# Local Variables: +# mode: shell-script +# sh-indentation: 4 +# End: 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: diff --git a/scripts/show_interfaces_summary b/scripts/show_interfaces_summary new file mode 100755 index 0000000..020ae2c --- /dev/null +++ b/scripts/show_interfaces_summary @@ -0,0 +1,55 @@ +#!/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 -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* ) +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 + +printf '%10s %10s %10s %10s %10s\n' \ + interface packets bytes errors drops + +for itf in ${full_itfs[@]##*/} ; do + 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 + printf '%10s rx %10d %10d %10d %10d\n' \ + $itf $rx_packets $rx_bytes $rx_errors $rx_dropped + printf '%10s tx %10d %10d %10d %10d\n' \ + '' $tx_packets $tx_bytes $tx_errors $tx_dropped +done + +# Local Variables: +# mode: shell-script +# sh-indentation: 4 +# End: diff --git a/scripts/show_interfaces_system b/scripts/show_interfaces_system new file mode 100755 index 0000000..abc79d4 --- /dev/null +++ b/scripts/show_interfaces_system @@ -0,0 +1,75 @@ +#!/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 **** + +test -f /etc/default/vyatta && source /etc/default/vyatta +: ${vyatta_bindir:=/opt/vyatta/bin} + +shopt -s extglob +shopt -s nullglob + +declare progname=${0##*/} +declare -a full_itfs=( /sys/class/net/+(eth|vmnet|lo|sit|wan)* ) +declare -a itfs +declare -i flags + +_usage () +{ + cat <<-EOF + $progname [ enabled ] + EOF +} + +_error () +{ + ecode=$1 + shift + echo $@ + if [ $ecode -eq 1 ] ; then + _usage + fi + exit $ecode +} + +if [ $# -gt 0 ] ; then + if [[ $1 == --+(usage|help) ]] ; then + _usage + exit 0 + elif [[ $1 != enabled ]] ; then + _error 1 Invalid option: $1 + else + for itf in ${full_itfs[@]} ; do + let -i flags="$(cat $itf/flags) & 1" + [[ $flags -eq 1 ]] && \ + itfs[${#itfs[@]}]=${itf##*/} + done + fi +else + itfs=( ${full_itfs[@]##*/} ) +fi + +$vyatta_bindir/show_interfaces_statistics ${itfs[@]} + +# Local Variables: +# mode: shell-script +# sh-indentation: 4 +# End: diff --git a/scripts/show_interfaces_tunnel b/scripts/show_interfaces_tunnel new file mode 100755 index 0000000..d5df7b3 --- /dev/null +++ b/scripts/show_interfaces_tunnel @@ -0,0 +1,76 @@ +#!/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 **** + +test -f /etc/default/vyatta && source /etc/default/vyatta +: ${vyatta_bindir:=/opt/vyatta/bin} + +shopt -s extglob +shopt -s nullglob + +declare progname=${0##*/} +declare -a itfs + +_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 + elif [[ $1 != sit* ]] ; then + _error 2 \""$1"\" is not a tunnel device name\! + elif ! test -d /sys/class/net/$1 ; then + _error 2 $1: no such tunnel interface\! + else + itfs=( $1 ) + shift + fi +else + declare -a full_sits=( /sys/class/net/sit* ) + test ${#full_sits[@]} -gt 0 || \ + _error 2 No tunnel interfaces\! + itfs=( ${full_sits[@]##*/} ) +fi + +$vyatta_bindir/show_interfaces_statistics ${itfs[@]} + +# Local Variables: +# mode: shell-script +# sh-indentation: 4 +# End: |