Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 16, 2011 12:47:44

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Первая моя программа вообще
Сам кодить не умею но полазив по нету и собрав кучу исходников собрал в нужной мне последовательности и то интуитивно….но учу питон…правда всего месяц-полтора…до этого вообще не занимался программированием…хотя и это нельзя назвать программированием

код первый

import time
import Tkinter

device = 'ppp0'
curtime = ''
clock = Tkinter.Label()
clock.pack()
spisok1=[3,3,3,3]




def tick():
global curtime



pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')
kb = int(pepyaka.read())/1024

time.sleep(1)


if kb != curtime:
curtime = kb
a=int(spisok1[-1])
b=int(spisok1[-2])


spisok1.append(curtime)


curtime=a-b
print curtime,a,b
print spisok1
clock.config(text=curtime)
del spisok1[1]

f = open('/home/sanodin/stat/log_traf', 'r+')

f.write(str(a))


clock.after(200, tick)

tick()
clock.mainloop()
Понимаю что тяжелый и не совсем верно подсчитывает траф,да и как то наверное окольным путем пришел к такому…не обессудьте

потом решил что бы в окне показывало и скорость и использованый траф всего….вроде пашет но глючит и трассировка какие-то ошибки показывает
кто что скажет…как исправить или улучшить?


код
import time
import Tkinter

device = 'ppp0'
curtime = ''
clock = Tkinter.Label()
clock.pack()
spisok1=[3,3,3,3]

urtime = ''
lock = Tkinter.Label()
lock.pack()


def tick():
global curtime
global kb


pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')
kb = int(pepyaka.read())/1024

time.sleep(1)


if kb != curtime:
curtime = kb
a=int(spisok1[-1])
b=int(spisok1[-2])


spisok1.append(curtime)


curtime=a-b

clock.config(text=curtime)

del spisok1[1]

f = open('/home/sanodin/stat/log_traf', 'r+')

f.write(str(a))


clock.after(200, tick)
def tic():
global kb



lock.config(text=kb)
lock.after(1000, tic)




tic()
lock.mainloop()
tick()
clock.mainloop()

Офлайн

#2 Июнь 18, 2011 18:06:26

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Может кто подскажет другой алгоритм вычисления скорости трафика и как сохранять всю статистику в лог чтоб не за один сеанс а полностью шло сохранение общей суммы трафика

Офлайн

#3 Июнь 19, 2011 13:14:09

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Еще вариант
Теперь и общий трафик и за сеанс и скорость…лог создается в файле log.txt

from Tkinter import *
import sys
import string
import time

f=open(r'log.txt')
f.close
device = 'ppp0'
spisok1=[3,3,3,3]


def reader():
global label
time.sleep(1)
pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')
kb = int(pepyaka.read())/1024
f=open(r'log.txt')
traf = int(f.read())

f.close()
curtime = kb
a=int(spisok1[-1])
b=int(spisok1[-2])
spisok1.append(curtime)
curtime=a-b
traf+=curtime
del spisok1[1]
f = open(r'log.txt','w')
f.write(str(traf))
f.close()
flabel["text"]="Trafic: %s" % (traf)
label["text"]="Speed: %d" % (int(curtime))
slabel["text"]="Seans: %s" % (kb)
root.after(1000, reader)
root=Tk()


flabel=Label(root,text="*******:")
flabel.pack(anchor=W)
slabel=Label(root,text=":")
slabel.pack(anchor=W)
label=Label(root, text="******:")
label.pack(anchor=W)

reader()

root.title("Monitor Trafik")

root.mainloop()

Офлайн

#4 Июнь 20, 2011 09:37:07

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Входящий и исходящий суммирует

from Tkinter import *
import string
import time

f=open(r'log.txt')
f.close
device = 'ppp0'#network device. usually eth0 for ethernet, wlan0 for wifi, ppp0 for cdma/gsm
spisok1=[3,3,3,3]
spisok2=[3,3,3,3]

def reader():
global label
time.sleep(1)
pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')
kb = int(pepyaka.read())/1024
f=open(r'log.txt')
traf = int(f.read())
vh= open('/sys/class/net/' + device + '/statistics/tx_bytes', 'r')
vht=int(vh.read())/1024
f.close()
curtime = kb
a=int(spisok1[-1])
b=int(spisok1[-2])
spisok1.append(curtime)
curtime=a-b
d=int(spisok2[-1])
g=int(spisok2[-2])
spisok2.append(vht)
vhs=d-g
traf+=curtime+vhs
seans=kb+vht
del spisok1[1]
f = open(r'log.txt','w')
f.write(str(traf))
f.close()
flabel["text"]="Trafic: %s" % (traf)
label["text"]="Speed: %d" % (int(curtime))
slabel["text"]="Seans: %s" % (seans)
root.after(1000, reader)
root=Tk()
flabel=Label(root,text="*******:")
flabel.pack(anchor=W)
slabel=Label(root,text=":")
slabel.pack(anchor=W)
label=Label(root, text="******:")
label.pack(anchor=W)
reader()
root.title("Monitor Trafik")
root.mainloop()

Офлайн

#5 Июнь 20, 2011 18:26:16

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Для работы надо создать файл log.txt и прописать в нем любую цифру например 2,сохранить
Файл должен быть в директории откуда запускается скрипт….при последующих запусках лог файл будет содержать статистику

Офлайн

#6 Июнь 21, 2011 22:35:21

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Убрал time.sleep(1) теперь считает правильно…плюс минус 1

from Tkinter import *
import string
import time


device = 'ppp0'#network device. usually eth0 for ethernet, wlan0 for wifi, ppp0 for cdma/gsm
spisok1=[3,3,3,3]
spisok2=[3,3,3,3]

def reader():
global label

pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')#открываем файл где хранится статистика за сеанс
kb = int(pepyaka.read())/1024#преобразуем прочитанное в статистике в килобайты
f=open(r'log.txt')
traf = int(f.read())
vh= open('/sys/class/net/' + device + '/statistics/tx_bytes', 'r')
vht=int(vh.read())/1024
f.close()
curtime = kb
a=int(spisok1[-1])#создаем список в котором с разницей в секунду выводится статистика и разница между данными и есть скорость
b=int(spisok1[-2])#разница между последним и предпоследним элементом в списке
spisok1.append(curtime)
curtime=a-b
d=int(spisok2[-1])
g=int(spisok2[-2])
spisok2.append(vht)
vhs=d-g
traf+=curtime+vhs
seans=kb+vht
del spisok1[1]
f = open(r'log.txt','w')
f.write(str(traf))
f.close()
flabel["text"]="Trafic: %s" % (traf)
label["text"]="Speed: %d" % (int(curtime))
slabel["text"]="Seans: %s" % (seans)
root.after(1000, reader)
print spisok1
root=Tk()
flabel=Label(root,text="*******:")
flabel.pack(anchor=W)
slabel=Label(root,text=":")
slabel.pack(anchor=W)
label=Label(root, text="******:")
label.pack(anchor=W)
reader()
root.title("Monitor Trafik")
root.mainloop()

Отредактировано (Июнь 22, 2011 10:22:12)

Офлайн

#7 Июнь 22, 2011 22:55:18

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

Отделил мегабайты и килобайты

from Tkinter import *
import string
import time


device = 'ppp0'#network device. usually eth0 for ethernet, wlan0 for wifi, ppp0 for cdma/gsm
spisok1=[3,3,3,3]
spisok2=[3,3,3,3]

def reader():
global label

pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')
kb = int(pepyaka.read())/1024
f=open(r'log.txt')
traf = int(f.read())
vh= open('/sys/class/net/' + device + '/statistics/tx_bytes', 'r')
vht=int(vh.read())/1024
f.close()
curtime = kb
a=int(spisok1[-1])
b=int(spisok1[-2])
spisok1.append(curtime)
curtime=a-b
d=int(spisok2[-1])
g=int(spisok2[-2])
spisok2.append(vht)
vhs=d-g
traf+=curtime+vhs
seans=kb+vht
seans2=divmod(seans, 1024)
traf2=divmod(traf,1024)
del spisok1[1]
f = open(r'log.txt','w')
f.write(str(traf))
f.close()
def cen(rub):
return "%i MB. %i KB." % (rub)
def cena(rub):
return "%i MB. %i KB." % (rub)
flabel["text"]="Trafic: %s" % (cena(traf2))
label["text"]="Speed: %d" % (int(curtime))
slabel["text"]="Seans: %s" % (cen (seans2))
root.after(1000, reader)


root=Tk()
flabel=Label(root,text="*******:")
flabel.pack(anchor=W)
slabel=Label(root,text=":")
slabel.pack(anchor=W)
label=Label(root, text="******:")
label.pack(anchor=W)
reader()
root.title("Monitor Trafik")
root.mainloop()

Офлайн

#8 Июнь 23, 2011 16:10:21

d1ffuz0r
От: Moscow
Зарегистрирован: 2011-03-25
Сообщения: 127
Репутация: +  5  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

юзай git+github например что ли

Офлайн

#9 Июнь 28, 2011 20:39:13

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Монитор трафика под Ubuntu

При выключении интернета теперь не выдает ошибку

Кто знает как такое же под винду сделать…может модуль есть или в реестре где то прописывается статистика

from Tkinter import *
import string
import time


device = 'ppp0'#network device. usually eth0 for ethernet, wlan0 for wifi, ppp0 for cdma/gsm
spisok1=[3,3,3,3]
spisok2=[3,3,3,3]

def reader():
global label
while 1:
try:
pepyaka = open('/sys/class/net/' + device + '/statistics/rx_bytes', 'r')
kb = int(pepyaka.read())/1024
break
except:
time.sleep(5)
continue

f=open(r'log.txt')
traf = int(f.read())
vh= open('/sys/class/net/' + device + '/statistics/tx_bytes', 'r')
vht=int(vh.read())/1024
f.close()
curtime = kb
a=int(spisok1[-1])
b=int(spisok1[-2])
spisok1.append(curtime)
curtime=a-b
d=int(spisok2[-1])
g=int(spisok2[-2])
spisok2.append(vht)
vhs=d-g
traf+=curtime+vhs
seans=kb+vht
seans2=divmod(seans, 1024)
traf2=divmod(traf,1024)
del spisok1[1]
del spisok2[1]
f = open(r'log.txt','w')
f.write(str(traf))
f.close()
def cen(rub):
return "%i MB. %i KB." % (rub)
def cena(rub):
return "%i MB. %i KB." % (rub)
flabel["text"]="Trafic: %s" % (cena(traf2))
label["text"]="Speed: %d" % (int(curtime))
slabel["text"]="Seans: %s" % (cen (seans2))
root.after(1000, reader)


root=Tk()
flabel=Label(root,text="*******:")
flabel.pack(anchor=W)
slabel=Label(root,text=":")
slabel.pack(anchor=W)
label=Label(root, text="******:")
label.pack(anchor=W)
reader()
root.title("Monitor Trafik")
root.mainloop()

Отредактировано (Июль 2, 2011 23:11:31)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version