【问题标题】:Write tcpdump output in a text file into a single line将文本文件中的 tcpdump 输出写入单行
【发布时间】:2019-12-07 09:16:47
【问题描述】:

我想将文本输出中的所有行连接成一行。 使用以下命令,我可以监控 DHCP 流量:

tcpdump -lni eth0 -vvv -s 1500 '((udp port 67) and (udp[247:4] = 0x63350103))' | grep --line-buffered -E -i 'client-id|requested-ip|hostname'

对于每个新连接,我都会看到 3 个结果(IP、MAC、主机名),每个结果都在一个新行上。

可以将这三个每一个结果都写入一行并写入一个文件吗?

【问题讨论】:

    标签: bash grep tcpdump


    【解决方案1】:

    使用tr 删除带有-d 的换行符。在我的机器上运行并使用 en0 而不是 eth0,我在一行中看到了这一点:

    $ tcpdump -lni en0 -vvv -s 1500 '((udp port 67) and (udp[247:4] = 0x63350103))' | grep --line-buffered -E -i 'client-id|requested-ip|hostname' | tr -d '\n' > output.txt
    $ cat output.txt
            Client-ID Option 61, length 7: ether 6c:96:cf:d8:7f:e7      Requested-IP Option 50, length 4: 172.31.99.198     Hostname Option 12, length 3: "mbp"
    

    > 将用标准输入的内容覆盖文件。
    查看 tr 的manpage

    【讨论】:

    • 如果我输入 "tr -d '\n'" 没有看到结果。
    • 如果你使用tr -d '\n' > output.txt,你不会在你的cli上看到结果,因为它被重定向到output.txt
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-30
    • 1970-01-01
    • 2016-07-13
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多