我使用awk命令在两次不同的时间内查找日志文件中的条目。 我使用过这个命令,它可以工作:
awk '$0 >= "Oct 04 12:00:00" && $0 <= "Oct 04 12:30:00"' /var/log/messages
我想知道如何搜索在此期间允许或阻止的特定端口。例如:如果我在12点到12点30分之间搜索阻塞的端口22,我该如何使用此awk命令进行搜索?
/var/log/messages
档案的内容:
Nov 5 8:44:30 System1 Kernel [022525 252748] OUTPUT DROPPED=eth0 OUT= MAC=ff:ff:ff:ff:ff:ff:01:00:25:97:b2:47:01:00 SRC=10.0.0.1 DST=192.168.4.141 LEN=221 TOS=0x00 PREC=0x00 TTL=128 ID=23315 PROTO=UDP SPT=183 DPT=183 LEN=209
日志文件中的条目与上面的内容类似。我想知道如何匹配信息,比方说,12:00到12:30,其中SPT = 80,DPT = 80
答案 0 :(得分:0)
您可以使用&&
添加更多条件,就像使用日期一样。您可以在两个正斜杠之间放置一个正则表达式,以匹配整行/记录。
awk '/port 22 (blocked|allowed)/ && $0 >= "Oct 04 12:00:00" && $0 <= "Oct 04 12:30:00"' /var/log/messages
当然,如果您需要更复杂的规则,也可以使用括号和逻辑和(&&
)和/或或(||
)的组合。
我想知道如何匹配信息,比方说,12:00到12:30,其中SPT = 80,DPT = 80
按照上述说明,只需添加/SPT=80/ && /DPT=80/ && ...
条件即可。请注意,您显示的示例行不匹配,因为它的SPT和DPT值不是80而是143。
顺便说一下,请记住,按日期过滤的方式(例如$0 >= "Oct 04 12:00:00" && $0 <= "Oct 04 12:30:00"
)可能不适用于跨越月边界的日期,例如Nov
中的下限,Dec
中的上限{1}}无效。