Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Подсветка tcpdump  (Прочитано 1490 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Подсветка tcpdump
« : 13 Июля 2010, 18:18:49 »
Всем привет!
Вопрос: tcpdump -n host 192.168.0.1 | grep unreachable

Щас в консоль выводятся пакеты которые содержат unreachable, которые не дошли куда надо было.
Вопрос... возможно ли задать tcpdump -n host 192.168.0.1, но чтоб скажем unreachable выводились сюда же , но другим цветом...
В итоге чтобы получить вывод всех пакетов + нужные подсвечивались.
« Последнее редактирование: 13 Июля 2010, 18:26:42 от TrEK »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Подсветка tcpdump
« Ответ #1 : 13 Июля 2010, 19:11:20 »
Можно пропускать вывод tcpdump через скрипт на awk, который будет вставлять в нужные строки расцвечивающие esc-последовательности.
Что-то типа
tcpdump -n далее_по_тексту | awk '/unreachable/{print "\033[31;1m",$0,"\033[0m"} END{print $0}'
http://www.developer.com/open/article.php/631241/Linux-Console-Colors--Other-Tricks.htm

Рекомендую переключиться на wireshark, у него гораздо лучше аналитические способности.
Если нет X-сервера, а только ssh, то wireshark есть и под винду.

Либо можно извернуться, на ближайшей винде поставить Cygwin, запустить X там, а в Putty включить X-forwarding (кажется, так оно называется, аналог ssh -x).
« Последнее редактирование: 13 Июля 2010, 19:24:00 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Подсветка tcpdump
« Ответ #2 : 14 Июля 2010, 12:19:16 »
Можно пропускать вывод tcpdump через скрипт на awk, который будет вставлять в нужные строки расцвечивающие esc-последовательности.
Что-то типа
tcpdump -n далее_по_тексту | awk '/unreachable/{print "33[31;1m",$0,"33[0m"} END{print $0}'
http://www.developer.com/open/article.php/631241/Linux-Console-Colors--Other-Tricks.htm

Рекомендую переключиться на wireshark, у него гораздо лучше аналитические способности.
Если нет X-сервера, а только ssh, то wireshark есть и под винду.

Либо можно извернуться, на ближайшей винде поставить Cygwin, запустить X там, а в Putty включить X-forwarding (кажется, так оно называется, аналог ssh -x).


(Нажмите, чтобы показать/скрыть)
Дело в том , что здесь тспдам просто подсвечивает то, что только и выводит.... если будет выводится одно лишь АНРИЧБЛ, то тогда подсвечивать и не надо... я имел ввиду чтобы сыпались все без исключеняи пакеты... и лишь АНРИЧБЛ подсвечивались.

Пользователь решил продолжить мысль 14 Июля 2010, 13:03:33:
Вроде бы пишет что такая возможность есть в tcpdump 4.0.0, щас попробуем поставить
« Последнее редактирование: 14 Июля 2010, 13:03:33 от TrEK »

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Подсветка tcpdump
« Ответ #3 : 14 Июля 2010, 13:14:17 »
tcpdump -n далее_по_тексту | awk '{if($0~/unreachable/)print"\033[31;1m"$0"\033[0m";else print$0}'

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Подсветка tcpdump
« Ответ #4 : 14 Июля 2010, 13:17:03 »
tcpdump -n далее_по_тексту | awk '{if($0~/unreachable/)print"\033[31;1m"$0"\033[0m";else print$0}'

Ухты.. супер! Спасибо... если не получится буду использовать Ваш код! :coolsmiley:

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Подсветка tcpdump
« Ответ #5 : 15 Июля 2010, 10:42:36 »
А-а, шьерт побьери! Забыл!

END выполняется один раз в конце работы.

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

tcpdump -с -параметрами | awk '/unreachable/{print "\033[31;1m",$0,"\033[0m"; next} {print $0}'
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн TrEK

  • Автор темы
  • Активист
  • *
  • Сообщений: 738
  • good day in FolK-King life :)
    • Просмотр профиля
    • smallprogs.ru
Re: Подсветка tcpdump
« Ответ #6 : 16 Июля 2010, 10:48:58 »
А-а, шьерт побьери! Забыл!

END выполняется один раз в конце работы.

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

tcpdump -с -параметрами | awk '/unreachable/{print "33[31;1m",$0,"33[0m"; next} {print $0}'

Если четсно, я не понял, но всё равно спасибо :) У меня и так показывало все пакеты + красным с маркировкой АНРИЧБЛ...

Пользователь решил продолжить мысль 16 Июля 2010, 11:25:31:
Странно... когжда последняя комманда использывается--- пакеты ПИНГа не видны тогда...
« Последнее редактирование: 16 Июля 2010, 11:25:31 от TrEK »

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Подсветка tcpdump
« Ответ #7 : 16 Июля 2010, 11:31:52 »
Если четсно, я не понял, но всё равно спасибо :) У меня и так показывало все пакеты + красным с маркировкой АНРИЧБЛ...

Как работает awk.
Его программа в общем случае выглядит так:

BEGIN { команды }
/регэксп/ { команды }
/регэксп/ { команды }
/регэксп/ { команды }
END { команды }
Можно еще описывать функции, но мы об этом не будем.
awk читает из входного потока данные по строчке, сравнивает эту строчку со всеми регэкспами, которые ему даны. Если строка подходит регэкспу (или регэксп - строке), то выполняются команды, указанные после этого регэкспа.

То, что описано с ключевым словом BEGIN, выполняется один раз до чтения данных, то, что описано с END - один раз, после работы.
При этом в командах доступны переменные $0 - вся строка $1, $2, ... - ее отдельные поля, описание разделителей строк и полей, и прочие другие, о них подробно написано в документации.

Так вот, мой первый вариант не работал потому, что команда печати была только с описанием регэкспа.
Можно было бы написать так:
/unreachable/ {print "< $0 с подсветкой >"}
{print $0}
Т.е. print с подсветкой выполнять для строк с unreachable, а просто print - для всех.
Но тогда строки с unreachable будут выводиться дважды, сначала с подсветкой, потом без нее.
Поэтому после print с подсветкой надо поставить команду next, чтобы awk закончил обработку этой строки, прочитал из потока следующую и начал обрабатывать ее:

/unreachable/ {print "< $0 с подсветкой >"; next}
{print $0}

Собственно, если надо подсвечивать только одну unreachable, то этот вариант эквивалентен предложенному Mam(O)nом.
« Последнее редактирование: 16 Июля 2010, 11:46:11 от wl »
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн Mam(O)n

  • Старожил
  • *
  • Сообщений: 5855
    • Просмотр профиля
Re: Подсветка tcpdump
« Ответ #8 : 16 Июля 2010, 11:51:35 »
Собственно, если надо подсвечивать только одну unreachable, то этот вариант эквивалентен предложенному Mam(O)nом.
Да, я просто забыл про то, как next пишется, костыль пришел в голову быстрее, чем маны помогли ;)

 

Страница сгенерирована за 0.023 секунд. Запросов: 20.