如何通过REST API获取MikroTik LTE接口的蜂窝数据?
解决MikroTik LTE蜂窝数据的REST API路径问题
正确的REST API路径
要获取lte1接口的蜂窝数据(rssi、rsrp、rsrq、sinr等),需要使用**/interface/lte/monitor**路径,并通过查询参数指定目标接口,两种有效写法:
- 指定接口名称:
/interface/lte/monitor?interface=lte1 - 指定接口序号(若lte1是第一个LTE接口):
/interface/lte/monitor?number=0
这个路径返回的结果会包含你需要的所有蜂窝信号指标。
修改后的Python脚本
把原脚本的路径替换为正确的监控路径,同时修复了原脚本中的资源管理、循环逻辑和异常处理问题:
import json import time from datetime import datetime import requests import urllib3 from requests.auth import HTTPBasicAuth urllib3.disable_warnings() url = 'https://<myip>/rest' userName = '<user>' password = '<pw>' # 替换为正确的LTE监控路径,保留原有示例路径 paths = ['/interface/lte/monitor?interface=lte1', '/interface', '/ip/address'] # 使用with语句管理文件,避免资源泄漏 with open('mikrotik_lte_data.json', 'a', encoding='utf-8') as file: while True: responses = [] curr_time = datetime.now().astimezone().strftime('%Y-%m-%dT%H:%M:%S.%f%z') for path in paths: try: resp = requests.get(url + path, auth=HTTPBasicAuth(userName, password), verify=False) resp.raise_for_status() # 捕获HTTP请求错误 responses.append({"path": path, "data": json.loads(resp.text)}) except Exception as e: print(f"请求路径 {path} 失败: {str(e)}") responses.append({"path": path, "error": str(e)}) # 组装最终数据格式 data = {'timeLoc': curr_time} for item in responses: if 'data' in item: data[item["path"]] = item["data"] else: data[item["path"]] = item["error"] # 每行写入一条JSON数据,方便后续解析 file.write(json.dumps(data) + '\n') print(f"数据已写入,时间: {curr_time}") # 设置采集间隔,示例为10秒,可按需调整 time.sleep(10)
关键说明
- 原脚本存在的问题:
- 未正确初始化文件操作变量,改用
with语句可自动处理文件打开/关闭。 - 循环逻辑会重复覆盖数据,调整后每次采集独立处理所有路径。
- 未处理请求异常,新增
try-except避免脚本因单次请求失败崩溃。
- 未正确初始化文件操作变量,改用
/interface/lte/monitor接口返回的实时监控数据中,直接包含rssi、rsrp、rsrq、sinr等你需要的字段。
内容的提问来源于stack exchange,提问作者user22386286
相关产品推荐
相关产品推荐

