[Comm] Подсчет трафика

" KoLyA " =?iso-8859-1?q?kolyag_=CE=C1_mail=2Eru?=
Пн Июн 23 16:05:56 MSD 2003



-----Original Message-----
From: "Eugene A. Suchkov" <CityHawk на inbox.ru>
To: community на altlinux.ru
Date: Fri, 20 Jun 2003 17:17:49 +0000
Subject: Re: [Comm]  Подсчет трафика

> 
> On Fri, 20 Jun 2003 18:55:41 +0600
> Леутин Александр <leutin-lists на rambler.ru> wrote:
> 
> > > Все бы ничего, только это все про ОБЪЕМ ТРАФИКА, а меня интересует
> > > именно СКОРОСТЬ.
> > Понял. Возможно, я перепутал выше сообщение с другим %-)
> > И всё же -- лучше помогите уже существующим проектам (уверен, такие
> > есть), не заставляйте других и сами не изобретайте велосипед :).
> 
> Именно это я и пытаюсь сделать...
> 

в общем так.

простой скриптик, снимает статистику преданных/принятых байтов с /proc/net/dev.

пускается по watch.

хотя есть конечно iptraf, скорость показывает, но не совсем точно (на линии 115кБИТ он показывает скорость иногда до 30кБАЙТ/с). + я не знаю как его заставить логи вести.

а вот и сам скриптик:
------------------------------------------------
#!/bin/sh
## "моментальная" скорость eth0
## будет считать точнее если брать не через 1, а 2-5 секунд. 
## тогда там где bc поменять 1 на соответственно 2 или 3 или ... etc.
###### САМОЕ ПЕРВОЕ: снять статистику
st=$(cat /proc/net/dev|grep eth0)

###### дальше спокойно разбираем
###### переданные байты: 
db=$(echo $st|awk '{print $9}')
###### принятые байты: то же самое только awk '{print substr($1,6)}'
db=$(echo $st|awk '{print substr($1,6)}')

da=$(cat /tmp/oldc)
echo $db>/tmp/oldc
sp=`echo "scale=4;($db-$da)/(1*1024*1024)"|bc`
echo $sp>>/tmp/speedlog
echo $sp Mb/s
------------------------------------------------
надеюсь все понятно
раскоментируйте снятие либо принятых либо переданных байтов
первая цифра в логе будет лажовая, дальше нормально. перед запуском надо
echo 0 > /tmp/oldc




Подробная информация о списке рассылки community