鄙人工作中遇到要通過ip地址查詢ip歸屬的問題,ip歸屬是客戶提供的ip段和自有業務的對應表ip_attribute.txt ,
1.1.1.0/24 客戶;
2.2.2.0/32 辦公;
192.168.1.1/32 自有;
(1)下載安裝包
wget https://pypi.python.org/packages/8b/25/e5c59119ad0db85bb3e94037e3767dfdd6ca7b10e6a425ad49de554c6e83/pysubnettree-0.26.tar.gz
(2)解壓安裝組件: tar zxvf pysubnettree-0.26.tar.gz
cd pysubnettree-0.26.tar.gz
python setup.py install
(3)下面貼上腳本
#! /usr/bin/python
#-*-coding:utf-8 -*-
'''
Author: wendianfei
Date: 20180509
Description:
1、yum install python-devel.x86_64
2、insall pysubnettree-0.26.tar.gz. python setup.py install
3、python ./dns_attr.py
'''
import SubnetTree
import commands
import os
import sys
import time
def get_ip_attr(ip, ip_attr):
if ip in ip_attr:
result = ip_attr[ip]
else:
result = "未知IP屬性"
return result
if __name__ == "__main__":
###ip屬性文件
ip_attr = SubnetTree.SubnetTree()
for line in open('./ip_attribute.txt'):
if "#" != line[0] and len(line) > 13 and line[0] != "!":
line = line.strip('\n')
line = line[:-1]
array = line.split();
ip_attr[array[0]] = "%s" % array[1]
#print get_ip_attr('221.176.202.86', ip_attr)
#要查詢的ip文件和結果文件
f_sd = open('ip.txt','r')
re_sd = open('re_sd.txt','w')
for line in f_sd.readlines():
line = line.strip('\n')
if len(line) < 7:
continue
s = get_ip_attr(line, ip_attr)
print line.strip()+' '+s
re_sd.write(line.strip()+' '+s+'\n')
腳本B,利用IPY模塊匹配
#wget https://files.pythonhosted.org/packages/88/28/79162bfc351a3f1ab44d663ab3f03fb495806fdb592170990a1568ffbf63/IPy-0.83.tar.gz
#tar -xf IPy-0.83.tar.gz
#cd IPy-0.83
# python setup.py build
#python setup.py install
#encoding = utf-8
"""
ip
"""
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import IPy
f1 = open('ip.txt','r')
f2 = open('ip_attribute.txt','r')
for line1 in f1.readlines():
for line2 in f2.readlines():
if (line1 in IPy.IP(line2.strip('\n').split(' ')[0])) is True:
str = line1.strip('\n') + ' ' +line2.strip('\n').split(' ')[1]
print str