我需要从远程主机的不同接口收集tcpdump 目前我按以下方式进行:
ssh remotehost "tcpdump -i iface1 -w - " > iface1_dump.pcap & ssh remotehost "tcpdump -i iface2 -w - " > iface2_dump.pcap
我想知道是否有办法在单个ssh连接中实现它(可能是一些复杂的shell重定向是一种治疗方法),以便在第二个ssh命令正在运行时最小化数据包丢失
2条件:
远程主机的磁盘空间确实有限,所以我无法在该主机上本地tcpdump
tcpdump -i any 会影响以太网标头,因此我无法使用它
答案 0 :(得分:0)
您在目标计算机上创建了一个文件“SEND_DATA”,您可以在其中放置以下两行:
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&amp; OUT2将开始接收数据。
您还需要查阅nc的2个版本的手册,因为我看到参数有时会有所不同。
答案 1 :(得分:0)
这两个ssh可能是最好的方法,但你也可以在第一个,后台和第二个sed'/&amp; / two /'中选择's / ^ / one /',并且然后在本地主机上用“egrep'^ one'| sed's / one //'”将它们分开。
您还可以将输出保存在一对文件中,并在“完成”时将其显示回来。
答案 2 :(得分:0)
ssh remotehost "tcpdump -iiface1 -w- &
tcpdump -iiface2 -w- >&2 2>/dev/null" >iface1_dump.pcap 2>iface2_dump.pcap