当任何内容发生移动时,我正在为 Active Directory 事件创建 Splunk 警报。 我在搜索中实现正则表达式时遇到麻烦。
所以我创建了一个像这样的正则表达式:
=(\b\w+.\w?.?.?\w+\s?\w+),(?:.?.?.?)(\w+\s?\w+),(?:.?.?.?)(\w+\s?\w+),(?:.?.?.?)(\w+\s?\w+)
它并没有像我想要的那样工作。我正在使用的示例数据如下所示:
CN=User Test,OU=Admins,OU=Users,OU=Test,OU=12Test Test,DC=test,DC=test12,DC=test,DC=test
CN=User T. Test ADM,OU=Users,OU=Test,OU=Test,DC=test12,DC=test,DC=abc,DC=test
问题是我需要忽略
CN=
和 OU=
,然后只获取字符串,忽略 DC=
之后的任何内容,并将这些值提取为变量或可访问的字符串。
例如,我希望我的输出在警报中看起来像这样
User Account <CN= String> moved from <12Test> <Test> <Users>
当使用正则表达式 (regex) 从 Splunk 中的示例数据中提取所需信息时,您可以使用 Splunk 的 rex 命令。这是一个 Splunk 搜索查询,可帮助您实现所需的输出:
index=your_index 源类型=your_sourcetype
| rex field=_raw "CN=(?[^,]+),OU=(?[^,]+),OU=(?[^,]+),OU=(?[^,]+),DC =(?[^,]+),DC=(?[^,]+),DC=(?[^,]+),DC=(?[^,]+)"
| eval message="用户帐户
rex field=_raw ...:该命令使用rex命令对_raw字段进行正则表达式提取,该字段通常包含原始日志数据。
正则表达式模式“CN=(?[^,]+),OU=(?[^,]+),OU=(?[^,]+),OU=(?[^,]+),DC =(?[^,]+),DC=(?[^,]+),DC=(?[^,]+),DC=(?[^,]+)" 捕获 CN= 之后的值,日志数据中的 OU= 和 DC=。它为每个值创建命名捕获组(cn、ou 和 dc)。
eval message="User Account
table message:此命令仅选择要在搜索结果中显示的消息字段。
运行此 Splunk 搜索查询后,输出应为您提供所需的格式,其中“用户帐户”后跟 CN 值,“移自”后跟 OU 值。
我希望这有帮助