在终端中显示命令的网络活动的简单命令?格式更好的 strace?

在终端中显示命令的网络活动的简单命令?格式更好的 strace?

我想调试一个建立简单网络连接的程序。

是否有任何命令可以打印命令的网络活动,可以向我显示(例如在十六进制转储中)正在发送和接收的内容。strace -e trace=%network COMMAND这是解决方案的 90%,显示原始网络字节。
但格式不太好,它包含大量额外信息,而且格式不太容易阅读。

这是一个活跃的服务器,所以我不想tcpdump 全部网络活动,只有这一个命令。我希望这个命令打印在终端上(如strace),而不是有太多命令。

服务器是 Ubuntu Linux 18.04。

答案1

根据进程运行和保持连接打开的时间长短,您可以使用lsofss查看特定应用程序正在使用的网络连接和源端口,并使用该详细信息为tcpdump

我认为 strace 会给你关于源端口和目的地的相同详细信息。

当所有相关的网络流量在您制作适当的过滤器之前都已经发送时 - 考虑捕获(更多)更多细节到文件中,然后针对该 pcap 文件运行 tcp dump。

答案2

既然您提到了,tcpdump似乎您不需要从 获得的所有(内部)信息strace。您可能已经知道这些程序在网络上访问了哪些端口(我假设https并且http仅作为示例)。如果是这种情况,您可以使用

tcpdump port https or http

(我省略了第二个port关键字,tcpdump 使用最后一个关键字)。
要改进该过滤器表达式,请查看man (7) pcap-filter

相关内容