如何将一个终端的输出转发到另一台可以使用 grep 的服务器?

如何将一个终端的输出转发到另一台可以使用 grep 的服务器?

我需要在某个交换机上运行 tcpdump 并将其通过带有高级正则表达式的 grep 传递。那个 switch shell 非常愚蠢,没有带 regexp 的 grep,但有一个 tcpdump 包含我需要的选项。

有没有办法在交换机终端上运行 tcpdump 并将整个输出传递到另一台 Linux 机器,例如传递到该机器上的文件,这样我就可以在线 grep 该文件并查看实时会话中发生了什么?

答案1

如果您可以通过 SSH 访问您的交换机,您只需执行以下操作

ssh switch 'tcpdump <args>' | grep <fancy pattern>

请注意,与 @DopeGhoti 提出的 netcat 解决方案相比,这可能会稍微慢一些(取决于交换机的 CPU),但您的数据是加密传输的。根据您所处的工作环境以及您捕获的数据的敏感性,这可能会或可能不会产生影响。

答案2

为什么不让交换机做交换机所做的事情(移动数据包)并使用 netcat 将文本从一台主机传输到另一台主机?

假设您想在 TCP 端口 12345 上发送。在侦听器主机(remotehost.example.com例如“”)上:

$ nc -l 12345 | grep 'pattern'

在发送方主机上:

$ /path/to/somejob | nc remotehost.example.com 12345

相关内容