Advertisement
Guest User

Untitled

a guest
Dec 15th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.80 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. from infoblox_client import connector, objects, exceptions
  4. import csv
  5. import getpass
  6. import argparse
  7. import sys
  8. import urllib3
  9. import ssl
  10.  
  11. parser = argparse.ArgumentParser(description='Query for dhcp settings in infoblox')
  12. parser.add_argument('-n','--number',help='dhcp option numbers to pull in 5,6,7,8 format')
  13. parser.add_argument('-e','--exclusion',help='Take numbers as an exclusion list',action='store_true')
  14. parser.add_argument('-f','--file-location',help='csv output',required=True)
  15. parser.add_argument('-m','--max-results',help='set max allowed results default=500000',default=500000, type=int)
  16. parser.add_argument('--no-ssl-verify',help='do not verify ssl',action='store_false')
  17. args = parser.parse_args()
  18. urllib3.disable_warnings()
  19.  
  20. def build_values(dhcp_ops, option, network):
  21.     values = {}
  22.     values['name'] = option.name
  23.     values['value'] = option.value
  24.     values['num'] = option.num
  25.     values['network'] = network.network
  26.     dhcp_ops.append(values)
  27.  
  28. def get_all_networks(con):
  29.     dhcp_ops = []
  30.     networks = objects.Network.search_all(con, max_results=args.max_results)
  31.     for network in networks:
  32.         if network.options != None:
  33.             for option in network.options:
  34.                 if args.number and args.exclusion:
  35.                     if type(option) == objects.DhcpOption and str(option.num) not in args.number.split(','):
  36.                         build_values(dhcp_ops,option, network)
  37.                 elif args.number:
  38.                     if type(option) == objects.DhcpOption and str(option.num) in args.number.split(','):
  39.                         build_values(dhcp_ops,option, network)
  40.                 else:
  41.                     if type(option) == objects.DhcpOption:
  42.                         build_values(dhcp_ops,option, network)
  43.     return dhcp_ops
  44.  
  45. def main():
  46.     try:
  47.         fields = ['network','name','num','value']
  48.         username = input('username > ')
  49.         password = getpass.getpass('password > ')
  50.         con = connector.Connector({'host':'infoblox.scsu.southernct.edu','username':username,'password':password,
  51.                 'ssl_verify':args.no_ssl_verify,'wapi_version':"1.7",'http_request_timeout':60})
  52.         dhcp_ops = get_all_networks(con)
  53.         with open(args.file_location,'w') as file:
  54.             writer = csv.DictWriter(file, fieldnames=fields)
  55.             writer.writeheader()
  56.             for option in dhcp_ops:
  57.                 writer.writerow(option)
  58.         print('Completed!')
  59.     except IOError:
  60.         print('Could not save csv file'+args.file_location,file=sys.stderr)
  61.         sys.exit(1)
  62.     except exceptions.InfobloxConnectionError as error:
  63.         if 'SSL' in str(error):
  64.             print('SSL Certificate could not be verified, if you are sure this is a legit server try running with the --no-ssl-verify flag', file=sys.stderr)
  65.         else:
  66.             print(error,file=sys.stderr)
  67.         sys.exit(1)
  68.     except exceptions.InfobloxException as error:
  69.         print('Infoblox Error:\n'+str(error),file=sys.stderr)
  70.     except KeyboardInterrupt:
  71.         print('User exited')
  72.         sys.exit(0)
  73.  
  74.  
  75.  
  76. if __name__ == '__main__':
  77.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement