#include #include #include #include #include #include #define DEV_FILE "/proc/net/dev" #define NR 100 FILE *f; char line[150],lineb[150]; struct D { char dev[10]; double b_in; double b_out; double p_in; double p_out; } d[NR],a[NR],t; char *ptr, *name; char dev[10],col1[25],col2[25],col3[25],col4[25]; int i,j,k; double kb=1024; struct itimerval del; int interval; int cit() { if((f=fopen(DEV_FILE, "r"))==NULL) { fprintf(stderr, "/proc/net/dev does not exist?\n"); exit(2); } fgets(line, 135, f); fgets(line, 135, f); j=0;k=0; while(fgets(line, 135, f)) { strcpy(dev,""); ptr = line; while(*ptr == ' ') ptr++; ptr--; while(*ptr != ':') { ptr++; strncat(dev,ptr,1); } strcpy(t.dev,dev); ptr++; strcpy(col1,""); while(*ptr != ' ') { strncat(col1,ptr,1); ptr++; } // printf("%s ",col1); while(*ptr == ' ') ptr++; strcpy(col2,""); while(*ptr != ' ') { strncat(col2,ptr,1); ptr++; } // printf("%s ",col2); for(i=0;i<6;i++) { while(*ptr == ' ') ptr++; while(*ptr != ' ') ptr++; } while(*ptr == ' ') ptr++; strcpy(col3,""); while(*ptr != ' ') { strncat(col3,ptr,1); ptr++; } // printf("%s ",col3); while(*ptr == ' ') ptr++; strcpy(col4,""); while(*ptr != ' ') { strncat(col4,ptr,1); ptr++; } // printf("%s ",col4); t.b_in = atof(col1); t.p_in = atof(col2); t.b_out = atof(col3); t.p_out = atof(col4); if(t.b_in != 0) { k++; strcpy(d[k].dev,t.dev); /* printf("%s ",d[k].dev);*/ d[k].b_in = t.b_in; d[k].b_out = t.b_out; d[k].p_in = t.p_in; d[k].p_out = t.p_out; /* printf("%f %f %f %f",d[k].b_in,d[k].b_out,d[k].p_in,d[k].p_out); printf("\n");*/ } } } void siga() { for(j=1;j<=k;j++) { strcpy(a[j].dev,d[j].dev); a[j].b_in = d[j].b_in; a[j].b_out = d[j].b_out; a[j].p_in = d[j].p_in; a[j].p_out = d[j].p_out; } cit(); clear(); refresh(); printw("Inetrface IN OUT IN OUT\n"); for(j=1;j<=k;j++) { printw("%s %10.2f %s %10.2f %s %10.2f %s %10.2f %s\n",d[j].dev,8*(d[j].b_in-a[j].b_in)/kb/interval,"kbps",8*(d[j].b_out-a[j].b_out)/kb/interval,"kbps",(d[j].p_in-a[j].p_in)/interval,"pps",(d[j].p_out-a[j].p_out)/interval,"pps"); // printf("%s %f %f %f %f\n",d[j].dev,(d[j].b_in),(d[j].b_out),(d[j].p_in),(d[j].p_out)); refresh(); } printf("---------\n"); } int main() { int q=1; signal(SIGALRM, siga); del.it_interval.tv_sec = 1; /* intervalul in s*/ del.it_interval.tv_usec = 0; del.it_value.tv_sec = 1; /*peste cate s sa plece*/ del.it_value.tv_usec = 0; interval = del.it_interval.tv_sec; setitimer(ITIMER_REAL, &del, NULL); cit(); initscr(); /* printf("IN kbps OUT kbps IN pps OUT pps \n");*/ while(q==1) { q=1; } }