【问题标题】:tcpdump output on a single linetcpdump 单行输出
【发布时间】:2019-07-25 18:58:50
【问题描述】:
我有一个 tcpdump 文件,我想打印出发送了多少行/数据包。
我正在使用 tcpdump -r 命令,但即使它们来自相同的协议,某些输出似乎也延伸到两行(见下图)。
我的问题是如何让它不出现在新行上并打印出总行数?
我已经使用 Wireshark GUI 对其进行了测试,它应该有 3188 行,但我想使用 Linux 命令行来执行此操作。
【问题讨论】:
标签:
linux
command
wireshark
tcpdump
【解决方案1】:
假设您使用的是 bash 或 ksh,请在运行 tcpdump 之前运行“export COLUMNS=1024”。 Tcpdump 将得出结论,显示宽度为 1024 个字符,这足以使每个数据包位于一个输出行上。我认为 COLUMNS 值没有任何实际限制。
【解决方案2】:
如果您在文本文件中有 tcpdump 输出的内容,您可以通过使用 less 和 -S 参数来避免换行。
来自较少的手册:
-S 或 --chop-long-lines
导致长于屏幕宽度的行被截断(截断)而不是包裹。也就是说,长线的部分
不适合屏幕宽度的不显示。默认是
换行;也就是说,在下一行显示余数。
与-N参数一起使用时,也会显示行数。
【解决方案3】:
如何让它不出现在新行并打印出总行数
如果您不想换行较长的行,则必须截断它们。您可以使用cut 命令执行此操作。例如:
tshark -r file.pcap | cut -c -80
如果您仅想计算输出中的行数,则可以使用wc 命令来实现。例如:
tshark -r file.pcap | wc -l
注意:无论是否截断长行,行数的计数保持不变。仅仅因为一条长线被换行并不意味着行数增加;它没有。因此,除非您真的需要截断长行,否则我建议您不要这样做;否则,您将无缘无故地删除可能有用的信息。
也就是说,如果您确实想要截断长行并且还希望能够打印出总行数,那么这可能需要 2 个步骤:
- 将截断的输出重定向到文件,然后
- 使用
wc计算文件中的行数。
例如:
tshark -r file.pcap | cut -c -80 > file.txt
wc -l file.txt (or cat file.txt | wc -l)
如果您希望能够立即查看输出并将输出写入文件以计算行数,则可以使用tee 命令执行此操作,例如:
tshark -r file.pcap | cut -c -80 | tee file.txt
wc -l file.txt
【解决方案4】:
tcpdump -nnA
将每个包以 ASCII 格式打印在一行上