Einleitung
In diesem Dokument wird beschrieben, wie ein API-Administrator Netzwerk-, Port- und URL-Objekte in Massen an FirePOWER Management Center (FMC) weiterleiten kann.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie über Kenntnisse in folgenden Bereichen verfügen:
Verwendete Komponenten
- FirePOWER Management Center unterstützt REST-APIs (Version 6.1 oder höher) mit aktivierter REST-API
- REST-API-Interaktionen mit Python.
Einschränkungen
- Das FMC akzeptiert keine Namen von Objekten, die mehr als 64 Zeichen enthalten.
- Der Objektname darf nicht mit einem Leerzeichen am Anfang des Objektnamens und einem Semikolon am Ende beginnen.
- Die Nutzlast darf nicht mehr als 1.000 Einträge in einem Bulk Push enthalten.
- Die Payload-Größe darf nicht mehr als 2 MB in einem Bulk Push betragen.
Hintergrundinformationen
REST-APIs werden aufgrund des einfachen programmierbaren Ansatzes, den Netzwerkmanager zur Konfiguration und Verwaltung ihrer Netzwerke verwenden können, immer beliebter. FMC unterstützt die Konfiguration und das Management über einen beliebigen REST-Client sowie den integrierten API-Explorer.
Das Beispiel in diesem Dokument nimmt eine CSV-Datei als Eingabe und überträgt die Objekte über die REST-API-Schnittstelle an FMC. In diesem Dokument wird nur der Host Network Bulk-Push behandelt. Eine ähnliche Logik kann für die anderen Objekte erweitert werden. Dem Dokument wird ein Beispielcode für URL- und Port-Objekte angefügt.
Nachfolgend finden Sie die API-Referenz für den POST-Test auf Netzwerkhosts, die verwendet werden, wie im Bild gezeigt:

Konfigurieren
Schritt 1: Aktivieren der REST-API und Generieren des Authentifizierungstokens Ausführliche Konfigurationsschritte und Beispiele finden Sie unter Generate Authentication Token on FMC.
import requests
import csv
import json
from requests.auth import HTTPBasicAuth
from getpass import getpass
address = input("Enter IP Address of the FMC: ")
username = input ("Enter Username: ")
password = getpass("Enter Password: ")
api_uri = "/api/fmc_platform/v1/auth/generatetoken"
url = "https://" + address + api_uri
response = requests.request("POST", url, verify=False, auth=HTTPBasicAuth(username, password))
accesstoken = response.headers["X-auth-access-token"]
refreshtoken = response.headers["X-auth-refresh-token"]
DOMAIN_UUID = response.headers["DOMAIN_UUID"]
Schritt 2: Umwandeln der bereitgestellten CSV-Datei in ein Dictionary zur Verwendung als JSON-Payload für die Anforderung. Beispiel-CSV-Datei für jeden Objekttyp wird an das Dokument angehängt.

csvFilePath = input("Please enter the CSV Filepath (For eg. : path/to/file/objects.csv) :")
host = []
with open(csvFilePath, encoding='utf-8-sig') as csvf:
csvReader = csv.DictReader(csvf)
for rows in csvReader:
if rows['type'] == "Host":
host.append(rows)
host_payload = json.dumps(host)
Die host_payload sieht zu diesem Zeitpunkt genauso aus wie im Bild:
[{
"name": "Host-1",
"description": "Host-1",
"type": "Host",
"value": "10.10.10.10"
},
{
"name": "Host-2",
"description": "Host-2",
"type": "Host",
"value": "10.10.10.1"
},
{
"name": "Host-3",
"description": "Host-3",
"type": "Host",
"value": "10.10.10.2"
}
]
Schritt 3.Erstellen Sie die Anforderung aus der Eingabe aus den vorherigen Schritten und senden Sie die Anforderung, wenn die Nutzlast nicht leer ist.
host_api_uri = "/api/fmc_config/v1/domain/" + DOMAIN_UUID + "/object/hosts?bulk =true"
host_url = "https://" + address + host_api_uri
headers = { 'Content-Type': 'application/json', 'x-auth-access-token': accesstoken }
if host != []:
response = requests.request("POST", host_url, headers=headers, data = host_payload, verify = False)
else :
print("Please Validate that the CSV file provided is correct or at correct location")
Überprüfung
- Drucken Sie den Statuscode der Antwort aus, um zu überprüfen, ob die Anforderung erfolgreich war oder fehlgeschlagen ist (wie hier gezeigt).
if response.status_code == 201 or response.status_code == 202:
print("Host Objects successfully pushed")
else:
print("Host Object creation failed")
- Melden Sie sich bei FMC an Navigieren Sie zu Object > Object Management > Network, und überprüfen Sie die Host Objects, wie im Bild gezeigt:

Fehlerbehebung
- Wenn Sie den REST-Client verwenden, werden möglicherweise Fehler im Zusammenhang mit dem SSL-Zertifikatproblem aufgrund eines selbstsignierten Zertifikats angezeigt. Sie können diese Validierung je nach verwendetem Client deaktivieren.
- Die Authentifizierungstoken der FMC REST API sind 30 Minuten lang gültig und können bis zu dreimal aktualisiert werden.
- Der mit der Anfrage verbundene Fehler kann aus dem Antworttext extrahiert werden. Diese kann als Protokolldatei gesammelt werden, um die Fehlerbehebung zu erleichtern.
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- Alle REST-Anforderungen werden in diesen beiden Protokolldateien auf FMC protokolliert. Suchen Sie nach Ihrer URL (z. B. .../object/hosts) mit der richtigen Operation (Wenn Sie nach einem Fehler für den GET-Vorgang suchen, stellen Sie sicher, dass Ihr Protokoll so etwas wie GET startet ...Objekt/Hosts)
tail -f /var/opt/CSCOpx/MDC/tomcat/logs/stdout.logs
tail -f /var/opt/CSCOpx/MDC/log/operation/usmsharedsvcs.log