0

我需要从远程主机的不同接口收集 tcpdump。
目前我通过以下方式进行操作:

ssh remotehost "tcpdump -i iface1 -w - " > iface1_dump.pcap &
ssh remotehost "tcpdump -i iface2 -w - " > iface2_dump.pcap

我想知道是否有办法在单个 ssh 连接中实现它(也许一些复杂的 shell 重定向是一种治疗方法)以最大程度地减少数据包丢失,而第二个 ssh 命令正在进行
2 个条件:
远程主机的磁盘空间确实有限,所以我可以t tcpdump 在该主机上本地
tcpdump -i any会影响以太网标头,因此我无法使用它

4

3 回答 3

0

您在目标机器上创建一个文件“SEND_DATA”,在其中放置以下 2 行:

tcpdump -i iface1 -w - | nc <IP> <PORT1>
tcpdump -i iface2 -w - | nc <IP> <PORT2>

每台机器都有netcat,所以它可以工作。您将 SEND_DATA 标记为可执行

接下来,在 PC 上打开一个监听端口,然后在远程机器上运行脚本:

> OUT1 nc -l -p PORT1
> OUT2 nc -l -p PORT1
ssh remotehost SEND_DATA

此时,文件 OUT1 和 OUT2 将开始接收数据。

您还需要查阅 nc 的 2 个版本的手册,因为我看到参数有时会有所不同。

于 2012-07-21T14:56:48.843 回答
0

两个 ssh 可能是最好的方法,但您也可以在第一个在后台使用 sed 's/^/one /',在第二个使用 sed 's/&/two /',然后将它们分开例如,在本地主机上使用“egrep '^one ' | sed 's/one //'”。

您还可以将输出保存在一对文件中,并在“完成”时将它们返回。

于 2012-07-22T03:59:04.517 回答
0
ssh remotehost "tcpdump -iiface1 -w- &
                tcpdump -iiface2 -w- >&2 2>/dev/null" >iface1_dump.pcap 2>iface2_dump.pcap
于 2014-04-04T10:48:09.297 回答