加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – Bash:如何在“实时”管道中进行替换?

发布时间:2020-12-16 06:23:24 所属栏目:大数据 来源:网络整理
导读:在我的办公室防火墙中,我使用如下命令: $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'

监控发送邮件的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 ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读