07-01-2021 07:21 AM
I wrote a python script that via API disables a list of DNS autoritative zones; in order to double check if the disable operation was successfull, I would like to know how to retrieve the disable field for a list of zones (either given the fqdn or the _ref) via API
thanks in advance
07-04-2021 08:05 AM
I've attcahed a python script for your use-case, down below. Please note that I've specified the WAPI version to be 2.10.1 & you may need to adjust that if your NIOS version doesn't support this version.
IMPORTANT NOTE : I haven't scaled this to refine the runtime complexity. If you have N number of domains to be checked, this code would login atleast N number of times to the grid before giving you the result. That definitely means a higher time-complexity & shall hit the concurrent login sessions to the grid. You may fix this by getting the results from the grid in one shot as a single JSON content(pull everything for /zone_auth onetime & then search the contents based on the entries inside your checkfile). I wrote this quickly & didn't consider this aspect then. I'll post a modified version later as possible. Ignore this note in case if this is more like a one-time use-case & the number of domains in your check list is low.
"""Script to inspect "Disable" flag of specific set of domains added under a List file file(no need to specify path if in same location, else specify the path+filename) as shown below List content example --> example.com alman.com infoblox.com example of listname to be entered--> domainlist.txt /home/alman/Desktop/pys/domainlist.txt """ import requests import urllib3 import json urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) resultsToClient= list_name=input("\nEnter the name of the List file :") type(list_name) gm_ip= input("Enter Grid master IP :") type(gm_ip) gm_user=input("Enter user name :") type(gm_user) gm_password=input("Enter password :") type(gm_password) print("\n\nChecking for *Active* domains from the list...\n") fileB=open(list_name, 'r') readFqdns=fileB.readlines() count = 0 urL = 'https://'+gm_ip+'/wapi/v2.10.1/zone_auth?_return_fields=fqdn,disable&fqdn=' for line in readFqdns: count += 1 reqResponse= requests.get(urL+line.strip(), auth=(gm_user, gm_password), verify=False) #print("The result : " + str(reqResponse.content)) writable_value=reqResponse.content response_native = json.loads(writable_value) for resp in response_native: if resp.get('disable') == False: help_value= resp.get("fqdn") resultsToClient.append(str(help_value)) print("Inspection complete & the *Active* domains from the list are as follows(If any):- \n") for active_domain in resultsToClient: print(active_domain.strip())
Hope this helps!