如何在Logstash中删除\r

xhv8bpkk  于 2023-04-18  发布在  Logstash
关注(0)|答案(1)|浏览(202)

出于安全原因,我需要解析/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,也许这就是问题所在?
谢谢大家。

qni6mghb

qni6mghb1#

如果您的字段包含字符串“\r”,您可以使用

mutate { gsub => [ "message", "\\r", "" ] }

如果您的字段包含回车符(Ctrl/M),则可以使用

mutate { gsub => [ "message", "\r", "" ] }

相关问题