记得有一次,领导给我一张表,里面是一些IP和域名,需要查询这些IP和域名所在地。当时傻乎乎的直接用IP在baidu当中查询查看所在地,还用ping将域名转化IP….这件事一直放在心里,希望有个工具可以自动化地完成这件事,于是乎….请看代码:
#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()