【问题标题】: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 个步骤:

        1. 将截断的输出重定向到文件,然后
        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 格式打印在一行上

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-28
            相关资源
            最近更新 更多