You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为Meraki Python API调用添加404错误处理方案咨询

Meraki API设备查询脚本的错误处理方案

问题背景

我编写了一段使用Meraki Python模块调用API查询设备的脚本,现在需要为它添加错误处理逻辑,在API返回错误码时执行对应操作。当前脚本无法处理404这类错误,而且发现不管设备是可用还是已分配状态,API都会返回"404 Not Found"状态码,需要解决404的检测与处理问题。

原始脚本代码

import meraki
import requests

API_KEY = 'API_KEY'
dashboard = meraki.DashboardAPI(API_KEY)

serial = input("What is the serial number?")
print(f"{serial}")

response = (dashboard.devices.getDevice(serial))

运行终端示例

成功时输出:

C:\Scripts\Meraki\dev> python .\getdevice.py
What is the serial number? XXXX-XXXX-XXXX

2023-04-26 18:32:52       meraki:     INFO > GET https://api.meraki.com/api/v1/devices/XXXX-XXXX-XXXX
2023-04-26 18:32:53       meraki:     INFO > devices, getDevice - 200 OK

失败时输出:

2023-04-26 18:41:09       meraki:     INFO > GET https://api.meraki.com/api/v1/devices/XXXX-XXXX-XXXX
2023-04-26 18:41:10       meraki:    ERROR > devices, getDevice - 404 Not Found, b''

解决方案

1. 添加错误处理逻辑

Meraki Python SDK会在API请求失败时抛出meraki.APIError异常,我们可以通过try-except块捕获该异常,再根据返回的状态码执行对应操作:

修改后的脚本:

import meraki

API_KEY = 'API_KEY'
# 可关闭默认控制台日志以减少冗余输出,按需开启
dashboard = meraki.DashboardAPI(API_KEY, print_console=False)

serial = input("What is the serial number? ").strip()
print(f"查询序列号: {serial}")

try:
    response = dashboard.devices.getDevice(serial)
    print(f"查询成功!设备信息:\n{response}")
except meraki.APIError as e:
    if e.status == 404:
        print(f"错误: 序列号 {serial} 未找到(404)")
        # 此处可添加404时的自定义操作,比如记录日志、提示用户核对信息等
    else:
        print(f"API请求出错,状态码: {e.status},错误信息: {e.message}")

2. 关于"无论设备状态都返回404"的说明

出现这种情况通常有以下几种原因:

  • 当前API密钥对应的组织无权限访问该设备(设备属于其他Meraki组织)
  • 设备尚未被任何Meraki网络认领激活
  • 输入的序列号存在拼写错误

可先核对序列号是否正确,或通过Meraki Dashboard手动搜索该序列号,确认其归属与激活状态。

内容的提问来源于stack exchange,提问作者Jonathan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:57:29