问题
为什么我的 grep 命令匹配某些行,然后停止并显示此错误 grep: /var/log/apache2/modsec_audit.log: 二进制文件匹配
我的 grep 命令: grep '^[' /var/log/apache2/modsec_audit.log
我猜日志文件中有二进制内容,这会弄乱 grep 吗?但我是猜测,所以请解释一下原因是什么。另请解释我可以采取什么措施来解决这个问题。
日志文件本身是 ASCII 文本。我可以使用 less 来读取它文件 /var/log/apache2/modsec_audit.log /var/log/apache2/modsec_audit.log:HTML 文档,ASCII 文本,有很长的行(9938)
设置
在我的网络服务器上我安装了 modsec。审核文件是此处描述的多行记录 https://github.com/SpiderLabs/ModSecurity/wiki/ModSecurity-2-Data-Formats#user-content-Parts
仅供参考,我正在记录这些部分 SecAuditLogParts ABCEFHJZ
A 部分是审核日志标头,只有一行,包含以下信息: 时间戳 唯一事务 ID 源 IP 地址(IPv4 或 IPv6) 源端口 目标 IP 地址(IPv4 或 IPv6) 目标端口
例如 [05/Jan/2024:00:45:31.734758 +0000] ZZdRKyjPxuLDuK2XVhEfLgAAAAU 198.12.243.17 13914 192.168.2.143 443
我正在尝试做什么
我试图从很多很多行中找出 A 部分,并将其用作任意一天发生的事情以及机器人活动最繁忙的时间的简单参考。有很多更好的方法可以做到这一点,但请保持正轨 - grep 出了什么问题以及如何克服它?
grep
默认情况下不喜欢输出二进制数据(例如,输出二进制数据很可能会弄乱终端),因此它默认只指示binary file matches
二进制文件的匹配项。如果您无论如何都想要输出,您可能需要该
-a
选项。有关详细信息,请参阅手册中的相关部分: