我需要在某个交换机上运行 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