我使用基于 iptables 的 MAC 访问限制。我列出了我想允许访问的用户的 MAC ID,并删除了其余用户。当我运行时,iptables -vL
它会显示所有 MAC ID 及其用途:传输的数据包、以字节为单位的数据。所以我的问题是:
- 是否可以使其以兆字节为单位显示数据使用情况?
- 我可以对其进行排序,以便重度用户的 MAC ID 位于顶部吗?
- 最后,我可以将数据保存到磁盘(可能是数据库)中,以便它可以累加并在重启后继续存在吗?
答案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