【问题标题】:How can I tail a remote binary file?如何跟踪远程二进制文件?
【发布时间】:2020-06-12 05:11:37
【问题描述】:

我正在寻找一种将 Kubernetes pod 上的二进制文件流式传输(“tail”)到我的本地计算机的方法。

我试过了:

kubectl exec -it app-service-58697cf7c9-nnzgh -c tcpdumper -- tail -f -c +0 /output.pcap

tcpdumper 只是 tcpdump 的一个薄包装器,它作为 pod 中的辅助容器运行)。

几乎有效。运行此命令时,我可以在本地计算机上查看二进制数据流。

我在这里尝试做的最终目标是我想获取这个 pcap 数据的二进制流并将其通过管道传输到在我的机器上运行的 Wireshark。那是行不通的,这是因为数据并不是写在 pod 上的内容。

相关的不是 Kubernetes,也不是数据包捕获。问题似乎在于我如何使用tail 流式传输这些数据;当我以这种方式执行此操作时,tail 似乎添加了换行符。我想这是因为tail 不打算处理二进制数据。

如果我直接在 pod 上运行 tcpdump,将其写入那里的 .pcap 文件,然后使用 kubectl cp 传输该文件,然后将该文件加载到 Wireshark 中,它可以工作,我可以查看网络流量.使用十六进制编辑器可以看出,这种方法和上面的tail方法的区别在于,经常会有多余的字符(“0xD”,即换行符)。

有什么想法吗?

【问题讨论】:

  • 请检查我在您的其他问题中的回答,让我知道它对您有何帮助。我真的认为你的解决方案是 [ksniff ](github.com/eldadru/ksniff)。

标签: kubernetes binary-data tail


【解决方案1】:

我不确定是什么导致 tail 随机插入换行符,我无法重现您的问题,但我确实有几个想法:

1:base64 在服务器上对正在写入的文件进行编码,并在您在本地计算机上读取文件时对其进行 base64 解码。

2:不要写入文件,而是尝试写入 fifo (mkfifo),您可以简单地对它进行 cat 处理,而不是拖尾。

如果不更好地了解您的情况,我无法真正明智地谈论这些是否适用于您的情况,但认为它们值得一提。

【讨论】:

    猜你喜欢
    • 2010-10-08
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2017-01-16
    • 2023-03-05
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多