1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
#include <stdio.h>
#include <errno.h>
#include <time.h>
#define TMP "/tmp/netcheck_test.txt"
#define ETH_DOWN_CURR fileread("/sys/class/net/eth0/statistics/rx_bytes")
#define ETH_UP_CURR fileread("/sys/class/net/eth0/statistics/tx_bytes")
#define WLAN_DOWN_CURR fileread("/sys/class/net/wlan0/statistics/rx_bytes")
#define WLAN_UP_CURR fileread("/sys/class/net/wlan0/statistics/tx_bytes")
int con_size(double i){
if (i > 1000000)
printf(" %1.1lfM", i / 1000000) ;
else if (i > 1000 )
printf(" %3.0lfK", i / 1000) ;
else
printf(" %3.0lfB", i);
}
int fileread(char *fi)
{
FILE *f; unsigned long i;
f = fopen(fi, "r");
fscanf(f, "%ld", &i);
fclose(f);
return i;
}
int main()
{
unsigned long curr_down, curr_up;
unsigned long former_down, former_up, former_time;
unsigned long curr_time = time(NULL);
curr_down = WLAN_DOWN_CURR + ETH_DOWN_CURR ;
curr_up = WLAN_UP_CURR + ETH_UP_CURR ;
FILE *tmp_file;
tmp_file = fopen(TMP, "r");
if (tmp_file != NULL)
{
fscanf(tmp_file, "%d %d %ld", &former_down,
&former_up,
&former_time);
fclose(tmp_file);
unsigned short time_diff = curr_time - former_time;
printf("DOWN");
con_size((curr_down - former_down) / time_diff);
printf(" UP");
con_size((curr_up - former_up) / time_diff);
printf("\n");
}
else
printf("DOWN X UP X\n");
tmp_file = fopen(TMP, "w");
fprintf(tmp_file,"%ld %ld %ld", curr_down,
curr_up,
curr_time);
fclose(tmp_file);
}
|