0

我正在尝试编写一个获取 X-Forwarded-For 字段的第一个值的查询。由于负载均衡器,该字段中有多个 IP。有什么方法可以获取第一个值,即原始 IP?我已经查看了这方面的信息,但没有找到任何信息。

我正在使用 Log Parser Studio,但也可以选择使用命令行版本。这就是我所拥有的:

select X-Forwarded-For, count(X-Forwarded-For) as requestcount from '[LOGFILEPATH]' where cs-uri-stem like '%/%' group by X-Forwarded-For order by count(X-Forwarded-For) desc

4

2 回答 2

0

您可以尝试以下查询:

select X-Forwarded-For, count(X-Forwarded-For), MAX(DATE) as requestcount from '[LogFilePath]' group by X-Forwarded-For order by MAX(DATE) desc
于 2020-07-09T08:54:23.587 回答
0

logparser -i:W3C "select EXTRACT_TOKEN(x-forwarded-for,0,','), count(x-forwarded-for) FROM d:\tmp\U_ex201202_x.log where sc-status=200 GROUP BY EXTRACT_TOKEN(x-forwarded-for,0,',')"

EXTRACT_TOKEN 函数在这里是你的朋友,它从 IIS 日志的 x-forwarded-for 字段中以逗号分隔的地址列表中提取第一个 ip 地址

C:\Program Files (x86)\Log Parser 2.2>logparser -h 函数 EXTRACT_TOKEN

函数语法------------------------------------------------ ------------------------------------------->>

EXTRACT_TOKEN( 参数 , 索引 [ , 分隔符 ] )>>>>

例子:

EXTRACT_TOKEN(cs-用户名, 1, '\')

于 2020-12-07T20:23:15.763 回答