Страница 1 из 1
Анализатор трафика
Добавлено: 2011-09-26 9:06:06
Максим
Всем привет, стоит фрюха 7.4 + squid + sams и очень хочется мне отслеживать полностью весь трафик от юзеров и по каждому ip. Но в инете все только говорят о tcpdump но у него нету графической оболочки, а так хочется видеть как в sarg по каждому ip кто сколько накачал. Есть ли какие нибудь варианты ??????
За ранее большое спасибо!!!
Re: Анализатор трафика
Добавлено: 2011-09-26 9:30:21
Electronik
не знаю как в sams, но в sams2 есть такая информация.
Re: Анализатор трафика
Добавлено: 2011-09-26 9:52:11
Morty
вот такой вариант, без всяких "граф. оболочек"
Код: Выделить всё
#!/usr/bin/python -O
import os, datetime, time
#, netaddr
logfile = "/var/log/squid/access.log.0"
#net = '192.168.0.0/16'
today = datetime.date.today()
host = os.popen("hostname").read()
start_time = datetime.datetime(2001,03,25)
stop_time = datetime.datetime(2020,03,29)
# make Epoch Seconds
ep_start = time.mktime(start_time.timetuple())
ep_stop = time.mktime(stop_time.timetuple())
# for skleroz:
# datetime.datetime(1973, 01, 18, 3, 45, 50) => 1973-01-18 03:45:50
def CalculateSquid(logfile):
global IpList, err
IpList = {} # Dictionary {ip:byte}
dates = []
f = open(logfile)
content = f.readline()
err = 0
while content:
try:
date = content.split()[0]
Ip = content.split()[2]
bytes = int(content.split()[4])
except:
err += 1
content = f.readline()
if ep_start <= float(date) <= ep_stop:
IpList[Ip] = IpList.get(Ip,0) + bytes
dates.append(date)
f.close()
#for manualy set time period
from_t = datetime.datetime.fromtimestamp(float(dates[0]))
fin_t = datetime.datetime.fromtimestamp(float(dates[-1]))
print "Period \t\t: ", from_t.ctime(),'-',fin_t.ctime()
# ---
# Function that print the result, form reversed dictionary
def GraphReport():
global b
reverse = dict([(val,key) for (key,val) in IpList.items()])
b = reverse.keys()
for key, val in sorted(reverse.items(), reverse = True):
# if netaddr.IPAddress(val) in netaddr.IPNetwork(net):
if 1 < len(str(key)) < 4:
print val, '\t', key,' bytes'
if 4 <= len(str(key)) < 7:
print val, '\t', key/1024, ' Kbytes'
if len(str(key)) >= 7:
print val, '\t', key/1024**2, ' Mbytes'
# ---
print "\n"
CalculateSquid(logfile)
print "Report generated:", today
print "Ignored lines \t:", err
print "hostname \t:",host
print "Host \t\tdownloaded\n",'-'*35
GraphReport()
print "Summary downloaded :", sum(b)/1024**2,"Mb\n"
Re: Анализатор трафика
Добавлено: 2011-09-26 10:42:36
Максим
Прошу прощения что не правильно сформулировал вопрос! Мне нужны отчеты по всем портам, а не только по 80 как в sarg. По sarg у меня все красиво собирается, но там учитываются только, то что скачали или лазили через браузер, а хочется и ftp и все остальное.
Re: Анализатор трафика
Добавлено: 2011-09-26 10:49:49
Morty
изучай
http://ru.wikipedia.org/wiki/Netflow
либо можешь какой-то костыль в виде darkstat попользовать ))
А еще можешь придумать свой велосипед со своими круглыми колесами

Это тоже здорово