You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.4 KiB

  1. import argparse
  2. import requests
  3. import os
  4. import re
  5. def query_api(host):
  6. main_api = 'http://ip-api.com/json/'
  7. # For every host do an API request
  8. for x in host:
  9. json_data = requests.get(main_api + x).json()
  10. # Print out wanted JSON data formatted nicely
  11. print('\nCity\State: {}, {}\n'
  12. 'Country: {}\n'
  13. 'ISP: {}\n'
  14. 'IP: {}\n'
  15. 'MX: {}'.format(
  16. json_data['city'],
  17. json_data['regionName'],
  18. json_data['country'],
  19. json_data['isp'],
  20. json_data['query'],
  21. x))
  22. def findMX(host):
  23. p = os.popen('host -t MX ' + host)
  24. # initialize dicts
  25. std_out = []
  26. split = []
  27. MXServer = []
  28. # append terminal output to variable std_out
  29. for line in p:
  30. if re.search('not found', line):
  31. query_api([host])
  32. break
  33. std_out.append(line)
  34. p.close
  35. # create iterator
  36. i = 0
  37. # split line into dict and return MX servers
  38. for x in std_out:
  39. split = std_out[i].split()
  40. MXServer.append(split[-1])
  41. i = i + 1
  42. query_api(MXServer)
  43. if __name__ == "__main__":
  44. parser = argparse.ArgumentParser()
  45. parser.add_argument("host", help="hostname to lookip")
  46. args = parser.parse_args()
  47. findMX(args.host)