如何通过FortiManager API修改FortiGate主机名并同步至设备
解决FortiManager API修改主机名后未同步到设备及仪表板的问题
核心问题分析
你当前的API调用仅修改了FortiManager本地数据库中的CLI配置和设备显示名称,但未将修改后的配置推送到FortiGate设备,同时仪表板未触发状态刷新,导致变更未同步。
解决步骤
1. 修正设备名称修改的API参数
dvm/cmd/update/device调用需要明确指定待修改的设备(通过原名称或设备ID),而非直接传入新名称。正确的调用方式如下:
# 修正设备名称修改的API调用 fmg.fmgInstance.execute( "dvm/cmd/update/device", adom="root", device=[{ "name": old_hostname, # 填写设备原名称或设备ID "new_name": new_hostname.upper() }] )
2. 将修改后的配置安装到FortiGate设备
必须执行配置安装操作,把FMG中的配置变更推送到目标设备:
# 安装配置到设备(使用配置包方式) fmg.fmgInstance.execute( "securityconsole/install/package", adom="root", package="default", # 替换为你的实际配置包名称 device=[new_hostname.upper()], flags=["install_device"] )
如果是针对单设备的全局配置,也可使用更精准的接口:
# 安装单设备全局配置 fmg.fmgInstance.execute( "pm/config/install", adom="root", scope=[{ "name": new_hostname.upper(), "vdom": "root" }], flags=["generate_script", "install_device"] )
3. 刷新设备状态更新仪表板
配置安装完成后,触发设备状态同步,确保FMG仪表板获取最新信息:
# 刷新设备状态 fmg.fmgInstance.execute( "dvm/cmd/get/device", adom="root", filter=f"name='{new_hostname.upper()}'" )
验证步骤
- 登录FortiManager图形界面,检查设备列表中的设备名称是否更新
- 登录FortiGate设备,执行
get system global命令,确认hostname字段已变更
内容的提问来源于stack exchange,提问作者gozie onyia
相关产品推荐
相关产品推荐

