#include #include #include #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); }