Linux运维笔记
我们一直在努力

Linux shell查询ip归属地

我们经常有访问一些网站如IP138,上面会显示本机的IP多少,归属地是哪里,这些我们都是通过网页浏览器实现的,那如何在linux使用bash shell实现ip归属地查询。

可以使用curl ip.cn来实现,这里我们写一个小脚本,用来查看nginx日志并分析访问网站源IP的归属有哪些

先来看下命令和使用后的效果

for i in `cat /var/logs/nginx/access.log|awk '{print $2}'|sort|uniq -c|awk '{print $2}'`;do curl -s https://ip.cn/index.php?ip=${i};done

 

编写一个脚本,统计当天NGINX日志内各个地区IP访问个数:

#!/bin/bash

GetIPSource ()
{
for i in `cat /var/logs/nginx/access.log|awk '{print $2}'|sort|uniq -c|awk '{print $2}'`
do
        curl -s https://ip.cn/index.php?ip=${i}
done
}

GetIPSource|awk '{print $4}'|sort|uniq -c

GetIPSource是一个函数,函数内有个for循环,cat查看Nginx日志后,打印出第二列的IP,然后用sort排序,并用uniq去重并计数,最后打印出第二列,就是排序去重后IP列。

for循环每次只打印出一行的IP列,并赋值给变量${i},然后用curl访问https://ip.cn/index.php?ip并跟上=${i}即可

整个函数都执行完后用awk打印出第4列的归属地,并排除去重计数就可以了

 

 

赞(0) 打赏

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址