diff options
Diffstat (limited to 'scripts/show_interfaces_ethernet')
-rwxr-xr-x | scripts/show_interfaces_ethernet | 112 |
1 files changed, 112 insertions, 0 deletions
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: |