Skip to content

Instantly share code, notes, and snippets.

@fukawi2
Last active October 7, 2015 01:05
Show Gist options
  • Save fukawi2/b389edb9a2c1daf326cf to your computer and use it in GitHub Desktop.
Save fukawi2/b389edb9a2c1daf326cf to your computer and use it in GitHub Desktop.
ipcnt
#!/bin/bash
# The MIT License (MIT)
#
# Copyright (c) 2015 Phillip Smith
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
set -e
set -u
declare ifaces="${1:-}" # default to blank to avoid unbound var errors
declare iface=
function human_readable() {
awk '
function human(x) {
s="bkMGTEPYZ";
while (x>=1000 && length(s)>1)
{x/=1024; s=substr(s,2)}
return int(x+0.5) substr(s,1,1)
}
{gsub(/^[0-9]+/, human($1)); print}'
}
if [ -z "$ifaces" ] ;then
# get a list of all interfaces on this system
ifaces=$(ls /sys/class/net)
else
# make sure the interface supplied exists
if [ ! -d /sys/class/net/$ifaces ] ; then
echo "ERROR: interface $ifaces does not exist" >&2
exit 1
fi
fi
for iface in $ifaces ; do
[ "$iface" == 'lo' ] && continue
[ ! -d "/sys/class/net/${iface}" ] && continue
declare rx_bytes=$(cat /sys/class/net/${iface}/statistics/rx_bytes | human_readable)
declare rx_packets=$(cat /sys/class/net/${iface}/statistics/rx_packets)
declare rx_errors=$(cat /sys/class/net/${iface}/statistics/rx_errors)
declare tx_bytes=$(cat /sys/class/net/${iface}/statistics/tx_bytes | human_readable)
declare tx_packets=$(cat /sys/class/net/${iface}/statistics/tx_packets)
declare tx_errors=$(cat /sys/class/net/${iface}/statistics/tx_errors)
echo "Statistics for $iface"
printf "\tRecieved: %-4s (%s)\tErrors: %s\n" $rx_bytes $rx_packets $rx_errors
printf "\tTransmit: %-4s (%s)\tErrors: %s\n" $tx_bytes $tx_packets $tx_errors
done
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment