一、去下载纯真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改照成我们需要 导入数据库的格式
点击(此处)折叠或打开
- 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
3) 修改my.cnf
安装数据库就不说了,修改my.cnf
将max_connections修改为2000
4)创建数据库及表
5) 将txt文本load入数据库
6) 测试一下IP归属是否成功8.8.8.8
三、写个脚本调用数据库
4)创建数据库及表
点击(此处)折叠或打开
- create database ip_zone;
- use ip_zone;
- CREATE TABLE `ip_zone` (
- `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
- `begin` varchar(255) NOT NULL,
- `end` varchar(255) NOT NULL,
- `zone` varchar(255) NOT NULL,
- UNIQUE KEY `id` (`id`),
- KEY `begin` (`begin`),
- KEY `end` (`end`)
- ) ENGINE=MyISAM AUTO_INCREMENT=381085 DEFAULT CHARSET=utf8;
点击(此处)折叠或打开
- load data LOCAL infile '/root/a.txt' into table ip_zone fields terminated by ',' (begin,end,zone);
点击(此处)折叠或打开
- select zone from ip_zone where begin <= '008008008008' and end >= '008008008008';
- +------------------------------------------------------------+
- | zone |
- +------------------------------------------------------------+
- |美国加利福尼亚州山景市谷歌公司DNS服务器
- +------------------------------------------------------------+
- 1 row in set (0.00 sec)
基本没有问题了
三、写个脚本调用数据库
点击(此处)折叠或打开
- vim check_ip.sh
- #!/bin/bash
- #create by wenlin.kuang 2012-04-26
- cat $1|sort|while read line
- do
- (b=`echo "$line"|sed 's/\./ /g'|awk '{printf("%03d%03d%03d%03d\n", $1,$2,$3,$4)}'`
- echo "$line#`mysql -u用户名 -p密码 ip_zone -N -e "select zone from ip_zone where begin<='"$b"' and end>='"$b"'" `" >> $1_zone.txt )&
- c=$(expr $c + 1)
- if [ "$c" -eq "500" ];then
- sleep 1
- c=0
- fi
- 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机房