Files
openclaw/skills/mikrotik-api/SKILL.md
2026-02-24 19:25:39 +00:00

133 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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`-цикл; он рассчитан на запрос-ответ.
## Готовые безопасные команды (типовые задачи)
### 1) Статус роутера
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /system/resource/print --proplist uptime,version,board-name,cpu-load,free-memory,total-memory
```
### 2) Список интерфейсов
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /interface/print --proplist .id,name,type,running,disabled,mtu
```
### 3) IP-адреса на интерфейсах
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /ip/address/print --proplist .id,address,interface,disabled
```
### 4) DHCP leases
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /ip/dhcp-server/lease/print --proplist .id,address,mac-address,host-name,status,server,last-seen
```
### 5) Маршруты по умолчанию
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /ip/route/print --proplist .id,dst-address,gateway,distance,active,disabled --query '?dst-address=0.0.0.0/0'
```
### 6) DNS-настройки
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /ip/dns/print --proplist servers,allow-remote-requests,cache-size,cache-used
```
### 7) Wi-Fi (legacy wireless)
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /interface/wireless/print --proplist .id,name,ssid,frequency,band,mode,disabled,running
```
### 8) Wi-Fi (wifiwave2)
```bash
python3 {baseDir}/scripts/routeros_api.py \
--host <ip> --user <user> --password '<pass>' \
print /interface/wifi/print --proplist .id,name,ssid,configuration.disabled,running
```
## Осторожно с изменениями
Перед командами `set/add/remove`:
1. Сними текущее состояние через `print`.
2. Проверь `.id` целевого объекта.
3. Применяй изменения по одной команде.
4. Сразу валидируй результат повторным `print`.
## Ссылки
- Основные заметки по протоколу: `references/routeros-api-notes.md`
- Практические шаблоны: `references/common-operations.md`