05-25-2022 04:51 PM
Hi Experts,
I am looking for some guidance to import network objects onto FTD via the api-explorer. I am able to create a single host using the GUI explorer. Any help on how the syntax would be if I want to import multiple objects via the api-explorer is appreciated.
I tested and see that the following syntax for a single host, how do i modify this for multiple hosts?
{
"name": "abc"
"value": "x.x.x.x"
"type": "networkobject"
"subType": "HOST"
}
05-26-2022 01:47 AM
Here is the Python script I can use the CSV file if you have a bulk of hosts. The CSV file used should be stored in the same directory as the script, and it must be referenced when calling the script like so: python <script.py> <csvfile.csv>. Here is the CSV file I used for the hosts:
name,value,type,description Host-1,10.0.1.10,host,Host 1 Host-2,10.0.2.10,host,Host 2
Python Script
import csv import json import sys import requests import os server = "https://192.168.45.45" username = "api" password = "cisco" headers = {'Content-Type': 'application/json'} api_auth_path = "/api/fmc_platform/v1/auth/generatetoken" auth_url = server + api_auth_path r = None def yes_or_no(question): answer = raw_input(question + "(y/n): ").lower().strip() print("") while not(answer == "y" or answer == "yes" or \ answer == "n" or answer == "no"): print("Input yes or no") answer = raw_input(question + "(y/n):").lower().strip() print("") if answer[0] == "y": return True else: return False csvfile = open(sys.argv[1]) objects = csv.DictReader(csvfile) print('\nThis script will attempt to create objects via an API call') if yes_or_no('\nDo you want to continue?'): () else: quit() try: print('\n\nPlease wait connection to FMC...') requests.packages.urllib3.disable_warnings() r = requests.post(auth_url, headers=headers, auth=requests.auth.HTTPBasicAuth(username,password), verify=False) auth_headers = r.headers auth_token = auth_headers.get('X-auth-access-token', default=None) if auth_token == None: print("auth_token not found. Exiting...") sys.exit() except Exception as err: print ("Error in generating auth token --> "+str(err)) sys.exit() headers['X-auth-access-token'] = auth_token print('...Connected! Auth token collected successfully (' + auth_token + (')\n')) api_path = "/api/fmc_config/v1/domain/e276abec-e0f2-11e3-8169-6d9ed49b625f/object/hosts" url = server + api_path if (url[-1] == '/'): url = url[:-1] for object in objects: post_data = { "name": object["name"], "type": object["type"], "value": object["value"], "description": object["description"], } print('\n*************************************') print('Creating object: ' + object["name"]) try: r = requests.post(url, data=json.dumps(post_data), headers=headers, verify=False) status_code = r.status_code resp = r.text log = open('api.log', 'a') print(" Status code: "+str(status_code)) json_resp = json.loads(resp) log.write('\n---------------------------------------------------------------------\n') log.write(json.dumps(json_resp,sort_keys=True,indent=4, separators=(',', ': '))) if status_code == 201 or status_code == 202: print (" SUCCESS ") elif status_code == 400: print (" Message: ") + resp + ('\n') else: r.raise_for_status() print (" Message: ") + resp + ('\n') except requests.exceptions.HTTPError as err: print ("Error in connection --> "+str(err)) finally: if r: r.close() print('\nLog file "api.log" appended\n')
api.log will logging what object it has created on the FMC.
07-15-2022 12:03 PM
Hello,
How can we do it in FDM? Our firepower version is 6.4.0.15.
Please help.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide