设为首页 收藏本站
查看: 1882|回复: 0

[经验分享] 自用ip地址库更新

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-16 09:37:59 | 显示全部楼层 |阅读模式
mysql信息:ip: 10.1.0.39  password:saurav48@jp  database:ip_lib
第一步:下载ip段归属数据库superadmin.csv
网站http://www.iac-i.org
第二步:准备好IP地理信息标准库地域编码表.xlsx
第三步:以superadmin.csv表为中心,关联地域信息表和高校信息表;已经写好脚本(执行脚本需要20分钟)
脚本如下:

# -*- coding: utf-8 -*-
#!/bin/env python
# function: make ip list for mysql
# write : lejie
# version: 1.0
# date: 2015-12-08
#open the file

#iplist = open('superadmin_utf8.csv','r')
#city = open('city_utf8.csv','r')
#school = open('school_utf8.csv','r')
iplist = open('superadmin.csv','r')
#iplist = open('super.csv','r')
city = open('city.csv','r')
school = open('school.csv','r')
end_file = open('iplib.csv','w+')
#readline and match

ip_lines = iplist.readlines()
city_lines = city.readlines()
school_lines = school.readlines()
tmp1 = [' ',' ',' ']
tmp2 = [' ',' ',' ',' ']

#print "start_ip,end_ip,region_code,edu_college_code,country,province,city,edu_city,edu_college"
head = "start_ip,end_ip,region_code,edu_college_code,country,province,city,edu_city,edu_college"
end_file.write(head+'\n')

for line_ip in ip_lines:
    #line_ip = line_ip.decode('utf-8')
    line_ip=line_ip.strip()
    split_ip=line_ip.split(',')
    split_ip1 = split_ip[:]
    #print split_ip
#
    for line_city in city_lines:
        line_city = line_city.decode('gbk')
        line_city = line_city.strip()
        split_city = line_city.split(',')
        #if split_city[0].strip() == u'全球' and (split_city[1].strip() != u"中国" or split_city[1].strip() != u"台湾" or split_city[1].strip() != u"澳门"):
        if split_city[0].strip() == u'全球' :
            #print "****",split_city[1].strip(),u"澳门"
            if split_city[1].strip() == u"中国" or split_city[1].strip() == u"台湾" or split_city[1].strip() == u"澳门" or split_city[1].strip() == u"香港":
        #if split_city[0].strip() == '\u5168\u7403':
                split_city[0] = u"中国,"+split_city[1]
            else:
                split_city[0] = split_city[1]+u",国外"
                split_city[1] = u"国外"
        #elif split_city[0].strip() != u'全球' and (split_city[1].strip() != u"中国" or split_city[1].strip() != u"台湾" or split_city[1].strip() != u"澳门"):
        else :
            #if split_city[1].strip() != u"中国" or split_city[1].strip() != u"台湾" or split_city[1].strip() != u"澳门" or split_city[1].strip() != u"香港":
            split_city[0] = u"中国,"+split_city[0]
            #else:
            #split_city[0] = u"中国,"+split_city[1]
        #print "****",split_city[0]
        #print split_ip1[2],split_city[2]
        #print split_city
        if split_ip1[2] == split_city[2]:
            #print "*************"
            #print split_ip1
            #split_ip1 = split_ip
            split_ip1.extend(split_city)
            #print split_ip1
            break
            #all_tmp.write("".join(alllist))
    if cmp(split_ip1,split_ip) == 0 :
        #print "#######"
        #print split_ip1
        #split_ip1 = split_ip
        split_ip1.extend(tmp1)
    #print "#######"
    #print split_ip1
        #all_tmp.write("".join(alllist))
    #end = ","
    #end = end.join(split_ip1)
    #print end.encode('GBK')
    #print end
###
    split_ip2 = split_ip1[:]
    if split_ip1[3] != 0:
        for line_school in school_lines:
        line_school = line_school.decode('gbk')
        line_school = line_school.strip()
        split_school = line_school.split(',')
        #print split_ip[3],split_school[3]
        if split_ip1[3] == split_school[3]:
            split_ip1.extend(split_school)
            break
        if cmp(split_ip1,split_ip2) == 0 :
        split_ip1.extend(tmp2)
    else:
        split_ip1.extend(tmp2)
   
    #print "+++++++++++"
    #print split_ip2
    all = [split_ip1[0],split_ip1[1],split_ip1[2],split_ip1[3],split_ip1[4],split_ip1[5],split_ip1[8],split_ip1[9]]
    end = ","
    end = end.join(all)
    end = end.encode('utf8')
    #print end
    end_file.write(end+'\n')
    #print split_ip1[0].encode('gbk'),",",split_ip1[1].encode('gbk'),",",split_ip1[2].encode('gbk'),",",split_ip1[3].encode('gbk'),",",split_ip1[4].encode('gbk'),",",split_ip1[5].encode('gbk'),",",split_ip1[8].encode('gbk'),",",split_ip1[9].encode('gbk')
    #print split_ip1[0],",",split_ip1[1],",",split_ip1[2],",",split_ip1[3],",",split_ip1[4],",",split_ip1[5],",",split_ip1[8],",",split_ip1[9]
    #print split_ip1[0].encode('utf-8'),",",split_ip1[1].encode('uft-8'),",",split_ip1[2].encode('utf-8'),",",split_ip1[3].encode('utf-8'),",",split_ip1[4].encode('utf-8'),",",split_ip1[5].encode('utf-8'),",",split_ip1[8].encode('utf-8'),",",split_ip1[9].encode('utf-8')

iplist.close()
city.close()
school.close()
end_file.close()

数据库结构:
create table ip_lib(
id int(11) NOT NULL  auto_increment,
start_ip varchar(15),
end_ip varchar(15),
region_code int(10),
edu_college_code  int(10) ,
country varchar(45),
province varchar(20),
city varchar(36),
edu_city varchar(17),
edu_college varchar(45)
primary key(id));


导入csv文件语法:
LOAD DATA LOCAL INFILE '/tmp/iplib.csv'
INTO TABLE ip_lib
FIELDS TERMINATED BY ','
lines terminated by '\n'
ignore 1 lines;



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-258589-1-1.html 上篇帖子: linux下发送邮件 下篇帖子: Cent OS 6.5 crontab 不执行 python脚本的解决方法 ip地址
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表