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 ... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |