整理和保存iptables收集的使用数据

我使用基于iptables的MAC访问限制。 我列出了我想允许访问的用户的MAC ID,然后放下rest。 而当我运行iptables -vL它显示所有的MAC地址和它们的用法:数据包传输,数据在字节。 所以我的问题是:

  1. 是否有可能使它显示兆字节的数据使用情况?
  2. 我可以对其进行sorting,以使重度用户的MAC ID达到最高?
  3. 最后,我可以将数据保存到磁盘,可以将数据保存到数据库中,这样可以重新启动并保存数据。

答案#1

什么是你的iptables --version

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

答案#2

使用iptables -xpipe道sort ,例如iptables -xvL $CHAIN | sort -rn -k 2 iptables -xvL $CHAIN | sort -rn -k 2

答案#3

将上述命令的输出传递给将执行数据库插入的脚本。

您可能需要使用awk '$1 ~ /[0-9]+/'进一步过滤Answer#2的输出以删除列标题, 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}' 

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