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