简介
本文档介绍应用编程接口(API)管理员如何批量将网络、端口和URL对象推送到Firepower管理中心(FMC)。
先决条件
要求
Cisco 建议您了解以下主题:
使用的组件
- 支持REST API(版本6.1或更高版本)并启用REST API的Firepower管理中心
- 使用Python的REST API交互。
限制
- FMC不接受大于64个字符的对象名称。
- 对象名称在对象名称的开头不能有空格,在结尾不能有分号。
- 负载在一个批量推送中不能包含超过1,000个条目。
- 负载大小在单个批量推送中不能超过2MB。
背景信息
REST API因轻量级的可编程方法而日益流行,网络管理员可以使用该方法来配置和管理其网络。FMC支持使用任何REST客户端以及使用内置API资源管理器的配置和管理。
本文档中的示例将CSV文件作为输入,并通过REST API接口将对象推送到FMC。本文档仅介绍主机网络批量推送,其他对象的类似逻辑可以扩展。示例代码附加到URL和端口对象的文档中。
以下是所使用网络主机上的POST的API参考,如图所示:

配置
步骤1.启用REST API并生成身份验证令牌。有关详细的配置步骤和示例,请参阅在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"]
步骤2.将提供的CSV文件转换为要用作请求的JSON负载的字典。每个对象类型的示例CSV文件附加到文档。

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)
此阶段的host_payload看起来与图中所示相同:
[{
"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"
}
]
步骤3.根据从先前步骤收到的输入创建请求,如果负载不为空,则发送请求。
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")
验证
if response.status_code == 201 or response.status_code == 202:
print("Host Objects successfully pushed")
else:
print("Host Object creation failed")
- 登录到FMC导航到对象>对象管理>网络,然后验证主机对象,如图所示:

故障排除
- 使用REST客户端时,由于自签名证书,您可能会看到与SSL证书问题相关的错误。您可以根据所使用的客户端关闭此验证。
- FMC REST API身份验证令牌有效期为30分钟,最多可以刷新三次。
- 可以从响应正文中提取与请求相关的错误。可以将其收集为日志文件,以帮助进行故障排除。
logfile = "requestlog.txt"
log = open(logfile,"w+")
log.write(response.text)
log.close
- 所有REST请求都会记录到FMC上的这两个日志文件中。搜索您的URL(例如../object/hosts)和正确的操作(如果您正在查找GET操作错误,请确保日志启动类似于GET的操作……对象/主机)
tail -f /var/opt/CSCOpx/MDC/tomcat/logs/stdout.logs
tail -f /var/opt/CSCOpx/MDC/log/operation/usmsharedsvcs.log