博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本分析IP归属地
阅读量:5843 次
发布时间:2019-06-18

本文共 2279 字,大约阅读时间需要 7 分钟。

因最近需要对大量的accesslog进行IP归属地分析,一些网页上的分析效率太低,而且每次只能分析500个IP,根本满足不了我的需求,所以自己写了一个IP归属地分析脚本。

一、去下载纯真IP地址数据库

    1) --> 下载 --> 纯真IP地址数据库

    2) 解压,打开IP.exe

 

    点解压就可以获取到IP及归属地址的txt文本,保存为ip_zone.txt

二、 对ip_zone.txt进行改造并导入到数据库

    1)先对ip_zone.txt进行编码转换

            用记事本打开,然后选另存为,改成UTF-8

 

2) 因ip_zone.txt要导入数据库并且能准确的定位,改照是必不可少的

            a) 将ip_zone.txt上传到linux服务器上

            b) 将ip_zone.txt改照成我们需要 导入数据库的格式

 

 点击(此处)折叠或打开

1.cat ip_zone.txt |sed 's/\./ /g'|awk '{printf "%03d%03d%03d%03d,%03d%03d%03d%03d,%s%s\n",$1,$2,$3,$4,$5,$6,$7,$8,$9,$10}' > a.txt

2.在linux下把a.txt转换成unix格式的,以防止出现^M符号。

 linux# dos2unix a.txt

3) 修改my.cnf

            安装数据库就不说了,修改my.cnf

                        将max_connections修改为2000

4)创建数据库及表

 

 点击(此处)折叠或打开

1.create database ip_zone;

2.                use ip_zone;

3.                CREATE TABLE `ip_zone` (

4.  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

5.  `begin` varchar(255) NOT NULL,

6.  `end` varchar(255) NOT NULL,

7.  `zone` varchar(255) NOT NULL,

8.  UNIQUE KEY `id` (`id`),

9.  KEY `begin` (`begin`),

10.  KEY `end` (`end`)

11.) ENGINE=MyISAM AUTO_INCREMENT=381085 DEFAULT CHARSET=utf8;

5) 将txt文本load入数据库

 

 点击(此处)折叠或打开

1.load data LOCAL infile '/root/a.txt' into table ip_zone fields terminated by ',' (begin,end,zone);

6) 测试一下IP归属是否成功8.8.8.8

 

 点击(此处)折叠或打开

1.select zone from ip_zone where begin <= '008008008008' and end >= '008008008008';

2.+------------------------------------------------------------+

3.| zone |

4.+------------------------------------------------------------+

5. |美国加利福尼亚州山景市谷歌公司DNS服务器

6.+------------------------------------------------------------+

7.1 row in set (0.00 sec)

 

基本没有问题了

三、写个脚本调用数据库

 

 

 点击(此处)折叠或打开

1.vim check_ip.sh

2.#!/bin/bash

3.#create by wenlin.kuang 2012-04-26

4.cat $1|sort|while read line

5.do

6.(b=`echo "$line"|sed 's/\./ /g'|awk '{printf("%03d%03d%03d%03d\n", $1,$2,$3,$4)}'`

7.echo "$line#`mysql -u用户名 -p密码 ip_zone -N -e "select zone from ip_zone where begin<='"$b"' and end>='"$b"'" `" >> $1_zone.txt )&

8.c=$(expr $c + 1)

9.       if [ "$c" -eq "500" ];then

10.                sleep 1

11.                c=0

12.        fi

13.done

四、测试脚本是否运行OK

随便输入些IP到一个test.txt文本里面,一行一个IP

vim test.txt

8.8.8.8

202.96.128.86

61.144.56.100

202.96.134.133

 

sh check_ip.sh test.txt

 会生成一个test.txt_zone.txt 内容如下

8.8.8.8#美国加利福尼亚州山景市谷歌公司DNS服务器

61.144.56.100#广东省广州市电信ADSL

202.96.134.133#广东省深圳市福田区电信

202.96.128.86#广东省广州市电信IDC机房

本文转自 vfast_chenxy 51CTO博客,原文链接:http://blog.51cto.com/chenxy/1170380,如需转载请自行联系原作者
你可能感兴趣的文章
MySQL数据库主从同步(单台2实例)
查看>>
HashMap和HashTable简介和区别
查看>>
java json 库之 jackson
查看>>
【图像缩放】最邻近插值
查看>>
阿里数据中台七年演化史——行在口述干货
查看>>
10.Java异常问题
查看>>
利用Git Webhooks实现jekyll博客自动化部署
查看>>
Fescar undoExecutor介绍
查看>>
Linux命令操作大全
查看>>
从周五开始香港主机特别慢,香港主机用户有同感吗?
查看>>
Ember.js 3.9.0-beta.3 发布,JavaScript Web 应用开发框架
查看>>
python标准库00 学习准备
查看>>
4.2. PHP crypt()
查看>>
Spring Cloud Config服务器
查看>>
commonservice-config配置服务搭建
查看>>
连接池的意义及阿里Druid
查看>>
ComponentOne 2019V1火热来袭!全面支持 Visual Studio 2019——亮点之WinForm篇
查看>>
Python递归函数与匿名函数
查看>>
loadrunner安装运行一步一步来(多图)
查看>>
git请求报错 401
查看>>