Я не очень хорошо знаком с Solaris, поэтому, возможно, есть инструменты, о которых я не знаю. Мне нужно отладить связь между двумя компонентами на одной машине, разговаривая друг с другом через обычный TCP-сокет.
Теперь, похоже, доступны два инструмента, один из которых известен в Linux и называется tcpdump
, а другой - это утилита Solaris под названием snoop
. К сожалению, на сайте клиента существует множество ограничений и еще много чего, поэтому использование этих инструментов не разрешено / невозможно.
Итак, я решил, что могу изменить порт прослушивания серверного процесса на что-то другое и иметь такой инструмент, как netcat
действовать как прокси на фактическом порту, перенаправляя трафик на «реальный» серверный процесс, так что я могу сбрасывать связь между этими компонентами.
Есть ли инструмент, который делает это - предпочтительно выводящий известный формат, такой как tcpdump? Или как еще вы бы это сделали?
измените порт прослушивания серверного процесса на что-то другое и используйте такой инструмент, как netcat
netcat будет выполнять переадресацию портов, но не записывать информацию. Тем не менее, suorce-код широко доступен - так что, если у вас есть навыки C, было бы просто добавить его. Если вы предпочитаете Perl - то есть несколько перенаправителей портов, написанных с его использованием. Есть модуль cpan Вот.
Если данные передаются по сети и у вас есть физический доступ к сети (в точке, где данные не зашифрованы), вы можете использовать WireShark.
snoop
в любом случае это не вариант, потому что он не будет работать для трафика между двумя процессами на одном хосте.
DTrace ваш лучший выбор. Например, вот скрипт для перехвата трафика между двумя процессами на одном сервере в snoop
формат. Однако этот конкретный сценарий зависит от внутренней работы ядра, поэтому он может работать или не работать с вашей версией Solaris 10.