Как захватить сетевые трассы, содержащие только определенную строку?

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

Чтобы захватить необработанные пакеты с исходного IP-адреса, я использую утилиту tcpdump . Однако проблема с использованием tcpdump заключается в том, что он непрерывно захватывает все пакеты из источника, включая трафик, в котором я не заинтересован.

Это приводит к огромному использованию дискового пространства, поскольку на этом конкретном порту имеется огромный вход данных из исходного IP-адреса, который используется для связи между моим адаптером и исходным сервером.

Есть ли способ или утилита Linux по умолчанию, которая может использоваться для захвата только тех пакетов, которые имеют определенную строку, например. eventLossOccurred, так что в конце я просто захватил эти пакеты, которые содержат эти сообщения?

Однако я искал различные параметры tcpdump , но не нашел способ получить желаемые результаты с помощью этой утилиты.

Вы можете использовать «tshark» (часть проводов) и использовать фильтр отображения «содержит / совпадения» для поиска строки. Предполагая, что это пакет tcp, ваш фильтр может быть чем-то вроде этого

 tshark -Y 'tcp contains "eventLossOccurred"' 

используя 'matches', вы можете указать регулярные выражения perl

NOTE: этом будут отображаться только данные пакета, вы не можете использовать это для захвата полного пакетного дампа в формате PCAP. Измените параметры tshark, чтобы отобразить требуемые данные.