关于iftop-0.17如何获取屏幕上指定内容,因为是小白方法比较蠢大家见谅

由于比设原因,看了一些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版权协议,转载请附上原文出处链接和本声明。