gpt4 book ai didi

linux - 从 Apache/Nginx Access.log 检索用户代理

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:07 25 4
gpt4 key购买 nike

我有下面的命令,它打印出命中、主机 IP(本地服务器/负载平衡器)和外部 IP(导致命中的 IP)我还想打印出用户代理信息以及给定的信息。请问如何实现这一点?

cat access.log | sed -e 's/^\([[:digit:]\.]*\).*"\(.*\)"$/\1 \2/' | sort -n | uniq -c | sort -nr | head -20

我得到的如下...

点击次数、主机 IP、外部 IP

如果可能的话我想要什么...

点击次数、IP(主机示例)、外部 IP(导致点击)、用户代理

10000 192.168.1.1 148.285.xx.xx Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/537.4(KHTML,如 Gecko)Chrome/98 Safari/537.4

下面附上日志的摘录

192.168.xxx.x - - [10/Jun/2019:12:40:15 +0100] "GET /company-publications/152005 HTTP/1.1" 200 55848 "google.com" "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.12) Gecko/20080219 Firefox/2.0.0.12 Navigator/9.0.0.6" "xx.xx.xx.xx"

最佳答案

如果 GNU AWK (gawk) 可用,请尝试以下操作:

awk -v FPAT='(\"[^"]+\")|(\\[[^]]+])|([^ ]+)' '
{ gsub("\"", "", $9); gsub("\"", "", $10); print $1 " " $10 " " $9 }
' access.log | sort -n | uniq -c | sort -nr | head -20
  • FPAT 的值表示 access.log 中每个字段的正则表达式。即:“双引号包围的字符串”、“正方形包围的字符串”括号”或“由空格分隔的字符串”。
  • 然后您可以将 access.log 的每一行拆分为字段:$1 表示主机 IP$10 用于外部 IP$9 用于用户代理

关于linux - 从 Apache/Nginx Access.log 检索用户代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56525488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com