使用命令行工具过滤并满足数据包流标准

Using command line tools to filter and meet packet flow criteria

我有一个包含 800 万个数据包的 pcap 文件,我已将其缩减为一个只有三个字段的 txt 文件:时间(以秒为单位)、IP 源地址、(流量)类型。

我需要从这个800万行的文件中只提取那些有100个数据包或更多的IP地址,剔除那些不符合100个数据包或更多标准的地址,使文件更小。

但我需要在减少的 txt 文件中保留所有 3 个字段,以及剩余地址(100 多个数据包)流中的所有数据包,因为我需要计算每个 IP 源地址的数据包流持续时间(流量结束时间-流量开始时间),只保留那些流量持续时间为60秒或以上的Ip源地址,从而进一步减少我的文件。

当我使用命令行工具满足第一个条件(100 个数据包或更多)时,我消除了这些地址的所有数据包流。如何使用命令行工具实现这两个条件,以便能够使用 bash 脚本自动执行该过程? 以下是我需要应用这两个标准的文件示例。非常感谢您的帮助!

1385957611.118522 99.61.34.145 TCP 1385957859.425248 99.61.34.145 TCP 1385958784.632631 99.61.34.145 TCP 1385959038.972602 99.61.34.145 TCP 1385959481.571627 99.61.34.145 TCP 1385860339.225421 37.139.6.111 TCP 1385860339.238402 37.139.6.111 TCP 1385860339.286538 37.139.6.111 TCP 1385860339.379029 37.139.6.111 TCP 1385860339.380669 37.139.6.111 TCP 1385860339.425247 37.139.6.111 TCP 1385860339.556737 37.139.6.111 TCP 1385860339.583913 37.139.6.111 TCP 1385860339.623861 37.139.6.111 TCP 1385857840.419300 103.248.63.253 TCP 1385857841.739372 103.248.63.253 TCP 1385857848.593171 103.248.63.253 TCP 1385857850.411457 103.248.63.253 TCP

我认为您可以结合使用 awk 和 xargs 来完成此操作。以下脚本假定您的数据文件组织为每行一条记录,并且每个时间戳都比前一个大:

awk '{
    line = [=10=];
    addr = ;
    addrcount[addr]++;
}
END {
    for (addr in addrcount) {
        if (addrcount[addr] >= 100) {
            print addr;
        }
    }
}' [DATA_FILE] | xargs -P [MAXPROCS] -I 'IP_ADDR' awk '{ if ( == "IP_ADDR") { print [=10=] } }' [DATA_FILE] | awk '{
    timestamp = 
    addr = ;
    traffictype = ;
    if (!(addr in minfor)) {
        minfor[addr] = timestamp;
    }
    maxfor[addr] = timestamp;
    typefor[addr] = traffictype;
}
END {
    for (addr in minfor) {
        print addr, minfor[addr], maxfor[addr], maxfor[addr] - minfor[addr], typefor[addr]
    }
}' | awk '{ if ( >= 60) { print , } }'

awk 的第一个位计算出哪些 IP 地址有 100 多条记录并打印它们,每行一个地址。这通过管道传输到 xargs,它运行另一个 awk 脚本,该脚本仅打印文件中具有这些 IP 地址的那些行。这应该可以防止您在尝试过滤 100 多个数据包时丢失上下文。倒数第二个 awk 脚本遍历过滤数据中的每一行并记录最小时间戳和最大时间戳,然后打印出差异。它还记录流量类型。最终的 awk 脚本过滤数据,只过滤那些时间增量超过 60 的 IP 地址,打印 IP 地址和流量类型。