fix: исправлен вызов /ping через binary_resource API
This commit is contained in:
+23
@@ -96,6 +96,7 @@ def fetch_address_list(api) -> list[str]:
|
|||||||
def mikrotik_ping(api, address: str) -> Optional[float]:
|
def mikrotik_ping(api, address: str) -> Optional[float]:
|
||||||
"""
|
"""
|
||||||
Возвращает avg-rtt (мс) или None если хост недоступен.
|
Возвращает avg-rtt (мс) или None если хост недоступен.
|
||||||
|
<<<<<<< HEAD
|
||||||
RouterOS API: /ping — это команда, вызывается через get_binary_resource.
|
RouterOS API: /ping — это команда, вызывается через get_binary_resource.
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
@@ -124,6 +125,28 @@ def mikrotik_ping(api, address: str) -> Optional[float]:
|
|||||||
return sum(rtts) / len(rtts)
|
return sum(rtts) / len(rtts)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
=======
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
ping_resource = api.get_resource("/ping")
|
||||||
|
results = ping_resource.call(
|
||||||
|
"",
|
||||||
|
{
|
||||||
|
"address": address,
|
||||||
|
"count": str(PING_COUNT),
|
||||||
|
"timeout": str(PING_TIMEOUT_MS),
|
||||||
|
},
|
||||||
|
)
|
||||||
|
for row in results:
|
||||||
|
if "avg-rtt" in row and row.get("avg-rtt"):
|
||||||
|
try:
|
||||||
|
return float(row["avg-rtt"].replace("ms", "").strip())
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
if row.get("packet-loss") == "100":
|
||||||
|
return None
|
||||||
|
return None
|
||||||
|
>>>>>>> 994b95f3e9aa67ddf108ce11904cd69f3d736ab8
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
log.warning("Ошибка пинга %s: %s", address, exc)
|
log.warning("Ошибка пинга %s: %s", address, exc)
|
||||||
return None
|
return None
|
||||||
|
|||||||
Reference in New Issue
Block a user