2

Мне нужно отслеживать объем трафика, который прошел через данный интерфейс (мобильный широкополосный ключ), чтобы я был в курсе, когда общее количество достигает (или приближается) к определенному количеству.

У меня есть практически бесплатный мобильный широкополосный доступ до не очень щедрого лимита, и я хотел бы запускать скрипт каждый раз, когда я хочу использовать ключ, и он должен либо предупреждать меня, когда он приближается к моему пределу, либо сообщать мне общее количество, когда я ухожу сценарий.

Все, что мне сейчас нужно, - это использовать правильную команду для записи общего переноса в понятных для человека значениях, то есть просто: «Вы передали 12,8 МБ с момента начала мониторинга». Я не забочусь о скорости, использовании или чем-либо кроме совокупного количества.

Как только у меня появится способ подсчета общего объема передачи, я с радостью добавлю несколько команд ipfw, чтобы настроить межсетевой экран и предотвратить дальнейшую передачу, пока я не скажу об этом.

Я использую Mac OS X 10.7, но хочу использовать стандартные команды терминала в скрипте bash (netstat, tcpdump, что бы то ни было предустановлено) и не использую загруженный инструмент (даже если он отлично выполняет свою работу - он мне нужен в скрипте, поэтому Я могу сформулировать свою собственную логику так, как я хочу).

1 ответ1

1

Для этого вы можете использовать фильтр пакетов (PF), который является частью OSX. Во-первых, создайте правило, которое маркирует весь трафик на интерфейсе (в данном примере en1 - замените его на фактический интерфейс):

echo "pass on en1 label \"traffic-en1\"" | sudo pfctl -f-
sudo pfctl -E # enable PF

Теперь трафик подсчитывается, и вы можете просмотреть счетчики с помощью sudo pfctl -sl:

traffic-en1 4701 69 13029 40 6292 29 6737

Не стесняйтесь конвертировать их в более удобное для человека форматирование:

sudo pfctl -sl | awk '$1="traffic-en1" { printf "KBytes total: %d (in: %d, out: %d)\n", $4/1024, $6/1024, $8/1024 }'

Что должно дать вам что-то вроде KBytes total: 192 (in: 95, out: 97) .

Вы можете сбросить счетчик с помощью sudo pfctl -z .

Примечание: OS X может жаловаться на «Нет поддержки ALTQ в ядре, функции, связанные с ALTQ отключены» при вызове pfctl - это совершенно нормально и безопасно игнорировать.

Примечание 2: Не рекомендуется удаленно играть с настройками брандмауэра, но в худшем случае pfctl -d отключит все это (если вы как-то заблокировали себя).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .