由于比设原因,看了一些iftop的源代码,虽然基本都没有看懂。但是还是知道了一些东西的。
首先我们直接上主菜。关于iftop输出到屏幕的函数主要在其ui.c文件下。我们打开ui.c
其中有很多定义的函数,我们找到draw_line_total()函数,其中下面的mvaddstr是一个输出流,我以前应该有所提到。这个函数中的buf,就是存储输出的流量信息,其中y,x分别表示其在终端的坐标信息。如果想要获得流量信息最简单的方法,使用一个fprintf(fp,"%s\n",(buf));将其输入到一个fp文档中,这样我们就获取了流量信息。
给一段我自己改过的代码
void draw_line_total(float sent, float recv, int y, int x, option_linedisplay_t linedisplay, int bytes) {
char buf[10];
float n;
int a = (COLS - 8* HISTORY_DIVISIONS);
switch(linedisplay) {
case OPTION_LINEDISPLAY_TWO_LINE:
draw_line_total(sent, recv, y, x, OPTION_LINEDISPLAY_ONE_LINE_SENT, bytes);
break;
case OPTION_LINEDISPLAY_ONE_LINE_SENT:
n = sent;
break;
case OPTION_LINEDISPLAY_ONE_LINE_RECV:
n = recv;
break;
case OPTION_LINEDISPLAY_ONE_LINE_BOTH:
n = recv + sent;
break;
}
if(linedisplay != OPTION_LINEDISPLAY_TWO_LINE) {
if(x==a){
readable_size(n, buf, 10, 1024, bytes);
FILE *fp = fopen("123.txt","a+");
mvaddstr(y, x, buf); //输出ip流量的
fprintf(fp,"%s\n",(buf));
fclose(fp);
}
}
}
这样我们就能获取到iftop中2S内的流量信息。
关于iftop输出的ip信息我接下来会讲解到:
在ui.c文档中大家找到void ui_print()函数,其中的host1,host2就是输出的ip地址了。至于方法我想大家都懂得。我就不再细说了。
转载请联系本人,如果能帮到你是我的荣幸。
版权声明:本文为qq_38171115原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。