我在 RHEL 服务器上安装并运行了一个适配器,当从该适配器连接的源发送特定信号消息时,该适配器面临断开连接。
为了从源 IP 地址捕获原始数据包,我正在使用该tcpdump
实用程序。然而,使用的问题tcpdump
是它不断地从源捕获所有数据包,包括我不感兴趣的流量。
这会导致巨大的磁盘空间利用率,因为此特定端口上有来自源 IP 地址的大量数据传入,该端口用于我的适配器和源服务器之间的通信。
有没有一种方法或默认的Linux实用程序可以用来仅捕获那些具有特定字符串的数据包,例如。发生事件丢失那么最后,我只捕获包含这些消息的数据包?
我搜索了各种选项tcpdump
,但是没有找到使用此实用程序获得所需结果的方法。
答案1
您可以使用“tshark”(wireshark 的一部分)并使用显示过滤器“包含/匹配”来查找字符串。假设它是一个 tcp 数据包,你的过滤器可能是这样的
tshark -Y 'tcp contains "eventLossOccurred"'
使用“matches”,您可以指定perl正则表达式
NOTE:
这只会显示数据包详细信息,您不能使用它来捕获 PCAP 格式的完整数据包转储。修改 tshark 选项以显示所需的详细信息