Re: Monitoring precise data in and out of eth1
On Fri, Jul 23, 1999 at 10:56:15AM +0100, Patrick Kirk wrote:
> Hi all,
>
> My ISP is wireless which means a 24/7 service which charges for usage over
> 600 Megs of days in and out in a month. The connection is via an antenna
> and thence an rj45 cable into a NIC.
>
> The NIC is eth1. Is there a term for measuring data throughput on a NIC and
> how would I set about doing it?
>
/proc/net/dev will give you the raw data in bytes.
FWIW, I wrote a small program that tells you how
much data your NICs have transferred since your last reboot
I've attached it. It needs the python-base package.
Run it with the -h option to get an argument summary.
--
Stephen Pitts
smpitts@midsouth.rr.com
webmaster - http://www.mschess.org
#!/usr/bin/env python
"""
NicInfo: display the number of bytes sent/received by your NICs
nicinfo -r PRECISION (-m | -g | -k) (INTERFACE)
-m show output in megabytes
-g show output in gigabytes
-k show output in kilobytes
-r <int> specify decimal places to round to (default: 0)
If INTERFACE is not specified, shows stats for all devices
"""
from string import split, strip
import getopt
from sys import argv, exit
class NicInfo:
def __init__(self, data_string):
phase1 = split(data_string, ":");
self.name = strip(phase1[0])
phase2 = split(phase1[1])
self.recvbytes = float(phase2[0])
self.sentbytes = float(phase2[8])
try:
dev_file = open("/proc/net/dev", "r")
except IOError:
print "Can't open /proc/net/dev"
exit(0)
dev_file.readline()
dev_file.readline()
real_data = dev_file.read()
nics = {}
for nic in split(real_data, "\n"):
if nic == "": break
nic_info = NicInfo(nic)
nics[nic_info.name] = nic_info
try:
args, show_nics = getopt.getopt(argv[1:], "gmkhr:")
except getopt.error:
print "Invalid argument", __doc__
exit(1)
if not show_nics: show_nics = nics.keys()
divisor = 1
identifier = "bytes"
prec = 0
if len(args) > 0:
for thearg in args:
if thearg[0] == "-m":
divisor = 1024 * 1024
identifier = "megabytes"
elif thearg[0] == "-k":
divisor = 1024
identifier = "kilobytes"
elif thearg[0] == "-g":
divisor = 1024 * 1024 * 1024
identifier = "gigabytes"
elif thearg[0] == "-r":
prec = int(thearg[1])
elif thearg[0] == "-h":
print __doc__
exit(0)
for nic in show_nics:
try:
nic_info = nics[nic]
except KeyError:
print "Can't find nic", nic
continue
nic_info.sentbytes = nic_info.sentbytes / divisor
nic_info.recvbytes = nic_info.recvbytes / divisor
print ("%s: sent %.*f %s; received %.*f %s"
% ( nic_info.name, prec, nic_info.sentbytes, identifier,
prec, nic_info.recvbytes, identifier) )
Reply to: