Форум сайта python.su
Первая моя программа вообще
Сам кодить не умею но полазив по нету и собрав кучу исходников собрал в нужной мне последовательности и то интуитивно….но учу питон…правда всего месяц-полтора…до этого вообще не занимался программированием…хотя и это нельзя назвать программированием
код первый
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()
Офлайн
Может кто подскажет другой алгоритм вычисления скорости трафика и как сохранять всю статистику в лог чтоб не за один сеанс а полностью шло сохранение общей суммы трафика
Офлайн
Еще вариант
Теперь и общий трафик и за сеанс и скорость…лог создается в файле 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()
Офлайн
Входящий и исходящий суммирует
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()
Офлайн
Для работы надо создать файл log.txt и прописать в нем любую цифру например 2,сохранить
Файл должен быть в директории откуда запускается скрипт….при последующих запусках лог файл будет содержать статистику
Офлайн
Убрал 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)
Офлайн
Отделил мегабайты и килобайты
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()
Офлайн
юзай git+github например что ли
Офлайн
При выключении интернета теперь не выдает ошибку
Кто знает как такое же под винду сделать…может модуль есть или в реестре где то прописывается статистика
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)
Офлайн