出于安全原因,我需要解析/etc/passwd文件,以查找过期或伪造的帐户。使用以下过滤器解析一个示例文件后:
filter {
grok {
match => {"message" => [ "%{WORD:username}:%{WORD:password}:%{NUMBER:userid}:%{NUMBER:groupid}:%{DATA:useridinfo}:%{DATA:homedir}:%{GREEDYDATA:command-shell}" ]
}
}
mutate {
remove_field => [ "@version", "log", "host", "@timestamp", "event", "message" ]
}
mutate {
gsub => [ "command-shell", "\\r", "" ]
}
}
输出是正确的,除了“command-shell”字段,它的每一行都有一个'\r',尽管mutate过滤器插件中有gsub。
示例:
{“useridinfo”:“guest”,“userid”:“405”,“groupid”:“100”,“homedir”:“/dev/null”,“username”:“guest”,“password”:“x”,“command-shell”:“/sbin/nologin\r”}
{“useridinfo”:“nobody”,“userid”:“65534”,“groupid”:“65534”,“homedir”:“/",“username”:“nobody”,“password”:“x”,“command-shell”:“/sbin/nologin\r”}
最初的示例行是:
guest:x:405:100:guest:/dev/null:/sbin/nologin
nobody:x:65534:65534:nobody:/:/sbin/nologin
我想删除它\r,但似乎没有任何工作,尽管Logstash中没有错误,并且它结束正常。
我是Logstash的新手,我尝试了DATA而不是GREEDYDATA,但它在Grok Debugger中不起作用,所以我离开了GREEDYDATA,也许这就是问题所在?
谢谢大家。
1条答案
按热度按时间qni6mghb1#
如果您的字段包含字符串“\r”,您可以使用
如果您的字段包含回车符(Ctrl/M),则可以使用