对 iptables 收集的使用数据进行排序和保存

对 iptables 收集的使用数据进行排序和保存

我使用基于 iptables 的 MAC 访问限制。我列出了我想允许访问的用户的 MAC ID,并删除了其余用户。当我运行时,iptables -vL它会显示所有 MAC ID 及其用途:传输的数据包、以字节为单位的数据。所以我的问题是:

  1. 是否可以使其以兆字节为单位显示数据使用情况?
  2. 我可以对其进行排序,以便重度用户的 MAC ID 位于顶部吗?
  3. 最后,我可以将数据保存到磁盘(可能是数据库)中,以便它可以累加并在重启后继续存在吗?

答案1

答案 #1

你的 是什麼iptables --version

在我的系统中,iptables -vL自动将字节转换为 Kbytes(K 后缀)或 Mbytes(M 后缀)。

答案 #2

使用iptables -x管道传输sort,例如iptables -xvL $CHAIN | sort -rn -k 2

答案 #3

将上述命令的输出通过管道传输到执行数据库插入的脚本。

您可能希望进一步过滤答案#2 的输出以awk '$1 ~ /[0-9]+/'删除列标题,并awk '$1 > 1000000'仅查看大于 1'000'000 字节的值。


将输出处理为 CSV 格式

iptables -xvnL $CHAIN | awk -v min=$MINIMUM '$1 ~ /[0-9]+/ && $2 >= min {print $2 "," $11}'

或者,如果您需要 CSV 列标题:

iptables -xvnL $CHAIN | awk -v min=$MINIMUM 'BEGIN {print "Bytes,MAC"} $1 ~ /[0-9]+/ && $2 >= min {print $2 "," $11}'

答案2

AWK 是你的朋友。 http://en.wikipedia.org/wiki/AWK

相关内容