Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- from infoblox_client import connector, objects, exceptions
- import csv
- import getpass
- import argparse
- import sys
- import urllib3
- import ssl
- parser = argparse.ArgumentParser(description='Query for dhcp settings in infoblox')
- parser.add_argument('-n','--number',help='dhcp option numbers to pull in 5,6,7,8 format')
- parser.add_argument('-e','--exclusion',help='Take numbers as an exclusion list',action='store_true')
- parser.add_argument('-f','--file-location',help='csv output',required=True)
- parser.add_argument('-m','--max-results',help='set max allowed results default=500000',default=500000, type=int)
- parser.add_argument('--no-ssl-verify',help='do not verify ssl',action='store_false')
- args = parser.parse_args()
- urllib3.disable_warnings()
- def build_values(dhcp_ops, option, network):
- values = {}
- values['name'] = option.name
- values['value'] = option.value
- values['num'] = option.num
- values['network'] = network.network
- dhcp_ops.append(values)
- def get_all_networks(con):
- dhcp_ops = []
- networks = objects.Network.search_all(con, max_results=args.max_results)
- for network in networks:
- if network.options != None:
- for option in network.options:
- if args.number and args.exclusion:
- if type(option) == objects.DhcpOption and str(option.num) not in args.number.split(','):
- build_values(dhcp_ops,option, network)
- elif args.number:
- if type(option) == objects.DhcpOption and str(option.num) in args.number.split(','):
- build_values(dhcp_ops,option, network)
- else:
- if type(option) == objects.DhcpOption:
- build_values(dhcp_ops,option, network)
- return dhcp_ops
- def main():
- try:
- fields = ['network','name','num','value']
- username = input('username > ')
- password = getpass.getpass('password > ')
- con = connector.Connector({'host':'infoblox.scsu.southernct.edu','username':username,'password':password,
- 'ssl_verify':args.no_ssl_verify,'wapi_version':"1.7",'http_request_timeout':60})
- dhcp_ops = get_all_networks(con)
- with open(args.file_location,'w') as file:
- writer = csv.DictWriter(file, fieldnames=fields)
- writer.writeheader()
- for option in dhcp_ops:
- writer.writerow(option)
- print('Completed!')
- except IOError:
- print('Could not save csv file'+args.file_location,file=sys.stderr)
- sys.exit(1)
- except exceptions.InfobloxConnectionError as error:
- if 'SSL' in str(error):
- 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)
- else:
- print(error,file=sys.stderr)
- sys.exit(1)
- except exceptions.InfobloxException as error:
- print('Infoblox Error:\n'+str(error),file=sys.stderr)
- except KeyboardInterrupt:
- print('User exited')
- sys.exit(0)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement