58 lines
2.5 KiB
Markdown
58 lines
2.5 KiB
Markdown
|
|
---
|
|||
|
|
name: mikrotik-api
|
|||
|
|
description: Управление MikroTik RouterOS через API (TCP 8728/8729): логин, print/getall, выборка через query, безопасная проверка статуса, интерфейсов, адресов, маршрутов и других разделов. Использовать, когда нужно читать/менять конфиг RouterOS программно, проверять состояние роутера или готовить автоматизацию под RouterOS API.
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# MikroTik API
|
|||
|
|
|
|||
|
|
Используй этот скилл для работы с RouterOS API на уровне «команда/атрибуты/ответы».
|
|||
|
|
|
|||
|
|
## Быстрый старт
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 {baseDir}/scripts/routeros_api.py \
|
|||
|
|
--host 192.168.88.1 --user admin --password 'secret' \
|
|||
|
|
cmd /system/resource/print
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
С `.proplist`:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 {baseDir}/scripts/routeros_api.py \
|
|||
|
|
--host 192.168.88.1 --user admin --password 'secret' \
|
|||
|
|
print /interface/print --proplist name,type,running,disabled
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
С query:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python3 {baseDir}/scripts/routeros_api.py \
|
|||
|
|
--host 192.168.88.1 --user admin --password 'secret' \
|
|||
|
|
print /ip/route/print --query '?dst-address=0.0.0.0/0' --query '?active=true'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Правила работы
|
|||
|
|
|
|||
|
|
- Сначала проверяй доступность API-сервиса (`8728`/`8729`).
|
|||
|
|
- По умолчанию используй чтение (`print`, `getall`) и минимальный `.proplist`.
|
|||
|
|
- Для долгих задач учитывай ответы `!trap`, `!done`, `!re`.
|
|||
|
|
- Для параллельных запросов используй `.tag`.
|
|||
|
|
- Не отправляй опасные команды (`reboot`, `reset`, массовые remove/set`) без явного подтверждения пользователя.
|
|||
|
|
|
|||
|
|
## Что делает скрипт
|
|||
|
|
|
|||
|
|
`routeros_api.py`:
|
|||
|
|
- логин post-v6.43 (`/login`, `=name=`, `=password=`),
|
|||
|
|
- отправка произвольной команды `cmd`,
|
|||
|
|
- упрощённый режим `print` с query и `.proplist`,
|
|||
|
|
- JSON-вывод по reply-фреймам (`!re`, `!done`, `!trap`, `!fatal`).
|
|||
|
|
|
|||
|
|
## Ограничения
|
|||
|
|
|
|||
|
|
- Сейчас реализован plaintext API (8728). Для TLS/API-SSL нужен отдельный режим.
|
|||
|
|
- Скрипт не делает бесконечный `listen`-цикл; он рассчитан на запрос-ответ.
|
|||
|
|
|
|||
|
|
## Ссылки
|
|||
|
|
|
|||
|
|
- Основные заметки по протоколу: `references/routeros-api-notes.md`
|