Сортировка и сохранение данных об использовании, собранных iptables

Я использую ограничение доступа MAC на основе iptables. Я перечислил MAC-идентификаторы пользователей, которым я хочу разрешить доступ, и оставил остальные. И когда я бегу iptables -vL он показывает все идентификаторы MAC и их использование: переданные пакеты, данные в байтах. Итак, мои вопросы:

  1. Можно ли заставить его показывать использование данных в мегабайтах?
  2. Могу ли я отсортировать его так, чтобы идентификаторы MAC для активных пользователей были на вершине?
  3. И, наконец, могу ли я сохранить данные на диск, может быть в базу данных, чтобы они могли складываться и выживать после перезагрузки?

2 ответа

Решение

Ответ № 1

Какой ваш iptables --version?

По моему, iptables -vL автоматически преобразует байты в килобайты (суффикс K) или в мегабайты (суффикс M).

Ответ № 2

использование iptables -x по трубопроводу sortнапример, iptables -xvL $CHAIN | sort -rn -k 2

Ответ № 3

Передайте вывод вышеуказанных команд в скрипт, который будет выполнять вставку базы данных.

Вы можете дополнительно отфильтровать вывод Ответа 2, используя awk '$1 ~ /[0-9]+/' удалить заголовки столбцов и awk '$1 > 1000000' чтобы увидеть только те значения, которые больше, чем 1000 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

Другие вопросы по тегам