逐渐老去的IT菜鸟 Rotating Header Image

用awk, wget, cut和sed分析网站日志IP,并获取IP地理位置

网站管理员最常做的事情不外乎是分析日志,先不谈商业的日志分析软件,其实在Linux下有很多小巧灵活的分析工具,象之前介绍的awk,sed等,组合起来特别适合分析网站日志。

有时我们会有这样的需求,例如网站的管理后台通常只允许公司的员工登录,那么系统管理员可以通过分析后台网站日志所有IP地址的地理位置来判断后台的安全;如果公司大部分员工都在北京,那后台如果出现有上海的IP,就需要特别小心,另外再分析这些IP的活动。

要取出所有IP地址,并且获取这些IP地址的地理位置,先用awk将IP地址抽取出来,然后用wget去百度或其他IP网站查询出IP的地理位置,再用sed和cut略加整理,打印出来即可。

假设IP地址在日志中是处在第十个字段(以空格分隔),那么以下的命令行可以实现以上需求:

cat *.txt | awk '/^[0-9]+/ {++arr[$10]} END{for (ip in arr) \
if(ip) system("wget -O "ip".html http://www.baidu.com/s?wd="ip);}' && \
cat *.html | grep "</span><span>" | \
cut -d'>' -f14,16 | \
sed 's/[<\/span|>]/ /g' && \
rm -rf *.html

如果日志文件太大,不要用cat,改用tail来选取特定的行数。

如果分析出可疑的IP地址,用grep即可将该IP活动的所有日志记录打印出来。

cat *.txt | grep "xxx.xxx.xxx.xxx"

No Comments

  • (Required)
  • (Required, will not be published)