Browse Source
Added regex to make entering IPs directly to work. Also added modifications to make it more in line iwht PEP8
master
Added regex to make entering IPs directly to work. Also added modifications to make it more in line iwht PEP8
master
Michael Heidelberger
7 years ago
1 changed files with 31 additions and 21 deletions
-
52ip-api.py
@ -1,48 +1,58 @@ |
|||||
import argparse |
import argparse |
||||
import json |
|
||||
import requests |
import requests |
||||
import os |
import os |
||||
|
import re |
||||
|
|
||||
def search(host): |
|
||||
main_api = 'http://ip-api.com/json/' |
|
||||
|
|
||||
ip = findMX(host) |
|
||||
for host in ip: |
|
||||
json_data = requests.get(main_api + host).json() |
|
||||
|
def query_api(host): |
||||
|
main_api = 'http://ip-api.com/json/' |
||||
|
# For every host do an API request |
||||
|
for x in host: |
||||
|
json_data = requests.get(main_api + x).json() |
||||
|
# Print out wanted JSON data formatted nicely |
||||
|
print('\nCity\State: {}, {}\n' |
||||
|
'Country: {}\n' |
||||
|
'ISP: {}\n' |
||||
|
'IP: {}\n' |
||||
|
'MX: {}'.format( |
||||
|
json_data['city'], |
||||
|
json_data['regionName'], |
||||
|
json_data['country'], |
||||
|
json_data['isp'], |
||||
|
json_data['query'], |
||||
|
x)) |
||||
|
|
||||
print('\nCity\State: {}, {}\n Country: {}\n ISP: {}\n IP: {}\n MX: {}'.format( |
|
||||
json_data['city'], |
|
||||
json_data['regionName'], |
|
||||
json_data['country'], |
|
||||
json_data['isp'], |
|
||||
json_data['query'], |
|
||||
host)) |
|
||||
|
|
||||
def findMX(host): |
def findMX(host): |
||||
p = os.popen('host -t MX ' + host) |
p = os.popen('host -t MX ' + host) |
||||
|
|
||||
#initialize dicts |
|
||||
|
# initialize dicts |
||||
std_out = [] |
std_out = [] |
||||
split = [] |
split = [] |
||||
MXServer = [] |
MXServer = [] |
||||
|
|
||||
#append terminal output to variable std_out |
|
||||
|
# append terminal output to variable std_out |
||||
for line in p: |
for line in p: |
||||
std_out.append(line) |
std_out.append(line) |
||||
p.close |
p.close |
||||
|
|
||||
#create iterator |
|
||||
|
# create iterator |
||||
i = 0 |
i = 0 |
||||
#split line into dict and return MX servers |
|
||||
|
# split line into dict and return MX servers |
||||
for x in std_out: |
for x in std_out: |
||||
split = std_out[i].split() |
split = std_out[i].split() |
||||
MXServer.append(split[6]) |
|
||||
|
MXServer.append(split[-1]) |
||||
i = i + 1 |
i = i + 1 |
||||
return MXServer |
|
||||
|
query_api(MXServer) |
||||
|
|
||||
|
|
||||
if __name__ == "__main__": |
if __name__ == "__main__": |
||||
parser = argparse.ArgumentParser() |
parser = argparse.ArgumentParser() |
||||
parser.add_argument("host", help="hostname to lookip") |
parser.add_argument("host", help="hostname to lookip") |
||||
args = parser.parse_args() |
args = parser.parse_args() |
||||
|
|
||||
search(args.host) |
|
||||
|
# If the arg is an IP address go straight to API |
||||
|
if re.fullmatch(args.host, |
||||
|
'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'): |
||||
|
query_api(args.host) |
||||
|
else: |
||||
|
findMX(args.host) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue