自动化批量查询IP和域名所在地脚本

记得有一次,领导给我一张表,里面是一些IP和域名,需要查询这些IP和域名所在地。当时傻乎乎的直接用IP在baidu当中查询查看所在地,还用ping将域名转化IP….这件事一直放在心里,希望有个工具可以自动化地完成这件事,于是乎小编找到一个学python的学习群315346913,在热心群友的帮助下完成了这个愿望….请看代码:

#coding=utf-8

import re
import socket
import urllib
import urllib2
from bs4 import BeautifulSoup
import sys
import argparse


target = ""


def check_ip(line):
    reip = re.compile(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])')
    if reip.match(line):
        return True

def usage():
    print "Hostname or IP To Province Tool"
    print "Usage: HostnameToAddr.py target_host"
    print "Examples: "
    print "------>HostnameToAddr.py 192.168.0.1"
    print "------>HostnameToAddr.py www.baidu.com"
    sys.exit()

def main():
    if not len(sys.argv[1:]):
        usage()

    global target

    sp = re.compile(r'(?<![\.\d])(?:\d{1,3}\.){3}\d{1,3}(?![\.\d])') 
    parse = argparse.ArgumentParser()
    parse.add_argument('target',help='server or client ipaddr')
    argments = parse.parse_args(sys.argv[1:])
    target = argments.target
    if not check_ip(target):
        try:
            ip = socket.gethostbyname(target)
        except:
            print "The Hostname/IP IS Unvalid !!!"
            sys.exit(1)
    else:
        ip = target
    p= {'wd': ip} 
    request = urllib2.urlopen("http://www.baidu.com/s?"+urllib.urlencode(p)+"&pn=1&cl=1&rn=2")
    data = request.read()
    soup = BeautifulSoup(data,"html.parser")

    itemlist = soup.findAll(name='div',attrs={'class':'c-span21 c-span-last op-ip-detail'})
    for item in itemlist:
        ip_text = item.get_text()
        print target + " is belong to: " + sp.split(ip_text)[1]

if __name__ == "__main__":
    main()
 

猜你喜欢

转载自blog.csdn.net/weixin_44995023/article/details/90805627