如何删除 在 Logstash 中

问题描述 投票:0回答:2

出于安全原因,我需要解析 /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”字段,它有一个' ' 在每一行中,尽管 mutate 过滤器插件中有 gsub。

例子:

{"useridinfo":"guest","userid":"405","groupid":"100","homedir":"/dev/null","username":"guest","password":" x","command-shell":"/sbin/nologin "}

{"useridinfo":"nobody","userid":"65534","groupid":"65534","homedir":"/","username":"nobody","password":"x", “命令外壳”:“/sbin/nologin "}

原来的例子是:

来宾:x:405:100:来宾:/dev/null:/sbin/nologin

没人:x:65534:65534:没人:/:/sbin/nologin

我想删除那个 似乎没有任何效果,尽管 Logstash 中没有错误并且结束正常。

你能帮我把那个去掉吗?我是 Logstash 的新手,我尝试使用 DATA 而不是 GREEDYDATA,但它在 Grok Debugger 中不起作用,所以我离开了 GREEDYDATA,也许这就是问题所在?

谢谢。

logstash gsub logstash-grok
2个回答
0
投票

如果您的字段包含字符串“ “你会删除它使用

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

如果像您的情况一样,您的字段包含回车符 (Ctrl/M),那么您可以使用删除它

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

0
投票

谢谢你回答我的问题

第一个离开 不变:

{"homedir":"/","userid":"65534","username":"nobody","password":"x","command-shell":"/sbin/nologin ","groupid":"65534","useridinfo":"nobody"}

第二个选项给了我(总是遵循相同的例子)这个:

{“命令外壳”:“/sbin/nologin ","useridinfo":"nobody","groupid":"65534","userid":"65534","password":"x","username":"nobody","homedir":"/"}

可悲的是,根本没有变化。

如果您需要更多信息,请告诉我,我需要解决它,但我没有找到解决方案。

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.