gpt4 book ai didi

perl - Bash:如何在 "live"管道中进行替换?

转载 作者:行者123 更新时间:2023-11-29 09:11:13 34 4
gpt4 key购买 nike

在我办公室的防火墙中,我使用这样的命令:

$ sudo tcpdump -v -s 1500 -i eth0 port 25 | grep 'smtp: S'

监控 LAN 客户端发送邮件(我需要及早检测来自某些客户端的任何可能的垃圾邮件发送者机器人,我们有非常宽松的安全策略,这里...:-()。

到目前为止,一切顺利:只要有任何客户发送电子邮件,我就会有一个连续的输出。

但是,如果我添加一些过滤器以获得更清晰的输出,则如下所示:

$ sudo tcpdump -v -s 1500 -i eth0 port 25 | grep 'smtp: S' | perl -pe 's/(.*?\)) (.*?)\.\d+ \>(.*)/$2/'

(这里我打算只获取源 ip/名称),直到 tcpdump 输出超过(bash?)缓冲区大小......(或者至少我想是......)我才会得到任何输出。

使用“sed”而不是“perl”没有任何改变...

有什么提示可以连续输出过滤后的数据吗?

最佳答案

stdbuf 放在第一个命令之前:

sudo stdbuf -o0 tcpdump ...

关于perl - Bash:如何在 "live"管道中进行替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20565844/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com