基于两个Lookup表的Splunk IP与CIDR匹配查询需求
Splunk搜索命令实现IP前缀与CIDR前缀匹配
以下是满足需求的搜索命令,核心是提取IP和CIDR的前三段作为匹配键,通过左关联获取对应location,未匹配则标记为unknown:
| inputlookup lookup1.csv | rex field=ipaddress "(?<ip_prefix>\d+\.\d+\.\d+)" | join type=left ip_prefix [ | inputlookup lookup2.csv | rex field=cidr "(?<ip_prefix>\d+\.\d+\.\d+)" | stats values(location) as location by ip_prefix ] | eval location=coalesce(location, "unknown") | fields name designation server ipaddress dept location
命令说明:
| inputlookup lookup1.csv:导入lookup1的所有数据rex field=ipaddress "(?<ip_prefix>\d+\.\d+\.\d+)":从ipaddress字段中提取前三段(x.x.x),保存为ip_prefix字段- 子搜索部分:
| inputlookup lookup2.csv:导入lookup2的数据rex field=cidr "(?<ip_prefix>\d+\.\d+\.\d+)":从cidr字段中提取前三段,同样保存为ip_prefixstats values(location) as location by ip_prefix:按ip_prefix聚合,确保同一前缀只返回一个location值
join type=left ip_prefix:以ip_prefix为键,左关联lookup1和预处理后的lookup2,保留lookup1的所有数据eval location=coalesce(location, "unknown"):如果关联后location字段为空(未匹配到),则设置为"unknown"fields name designation server ipaddress dept location:保留需要输出的字段,过滤其他临时字段
内容的提问来源于stack exchange,提问作者Bond
相关产品推荐
相关产品推荐

