MRTG a celkova sumarizace
Ladislav Kaderják
laco na unicom.sk
Pátek Listopad 24 10:18:11 CET 2000
myslim, ze v mrtg je aj mrtglog.c:
ak by ste ho nemali
[root na mail mrtg]# cat mrtglog.c
/****************************************************************
Written by vul na mail.ru
****************************************************************/
#include <time.h>
#include <stdio.h>
typedef struct
{
time_t t;
float in;
float out;
} mrtg;
int str2time(char *s);
int main(int argc, char *argv[])
{
mrtg ar[3000];
int i, y, a1, a2, a3, a4 ,a5, diff;
char s[128];
time_t t1, t2;
float IN, OUT;
if (argc != 3) {fprintf(stderr, "Usage: %s 01/04/03 01/05/03 < mrtg.log #
Count all traffic for April 2003\n ", argv[0]); exit(1);}
i = y = IN = OUT = 0;
t1 = str2time(argv[1]); t2 = str2time(argv[2]);
while (fgets(s, 100, stdin))
{
if (sscanf(s, "%d %d %d %d %d\n", &a1, &a2, &a3, &a4, &a5) == 5)
{
ar[y].t = a1;
ar[y].in = a2;
ar[y].out = a3;
y++;
}
}
for (i = 0; i < y; i++)
{
if ((t1 < ar[i].t)&&(ar[i].t < t2))
{
diff = ar[i].t - ar[i+1].t;
IN = IN + ar[i].in * diff;
OUT = OUT + ar[i].out * diff;
}
}
printf("IN = %.2f MB\nOUT = %.2f MB\n", IN/1000/1000, OUT/1000/1000);
// Look here! /8/1024/1024 translates bits to megabytes. Change this to
feet your needs
return 0;
}
int str2time(char *s)
{
struct tm tim;
int d, m, y;
if (sscanf(s, "%d/%d/%d", &d, &m, &y) != 3) {fprintf (stderr, "cant
convert %s to date\n", s); exit(10);};
if (y < 100) y = y + 2000;
tim.tm_sec = tim.tm_min = tim.tm_hour = 0;
tim.tm_mday = d;
tim.tm_mon = m - 1;
tim.tm_year = y - 1900;
return mktime(&tim);
}
--
laco na unicom.sk Ladislav Kaderjak
www.unicom.sk UNICOM Telematic spol. s r.o.
Další informace o konferenci Linux