From a1e3f217c8e649c02f945ccb1da536288e6c62af Mon Sep 17 00:00:00 2001 From: OpenClaw Assistant Date: Tue, 24 Feb 2026 19:25:39 +0000 Subject: [PATCH] Expand mikrotik-api skill with common safe operation templates --- skills/mikrotik-api/SKILL.md | 75 +++++++++++++++++++ .../references/common-operations.md | 48 ++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 skills/mikrotik-api/references/common-operations.md diff --git a/skills/mikrotik-api/SKILL.md b/skills/mikrotik-api/SKILL.md index eeace2f..2ac2c4d 100644 --- a/skills/mikrotik-api/SKILL.md +++ b/skills/mikrotik-api/SKILL.md @@ -52,6 +52,81 @@ python3 {baseDir}/scripts/routeros_api.py \ - Сейчас реализован plaintext API (8728). Для TLS/API-SSL нужен отдельный режим. - Скрипт не делает бесконечный `listen`-цикл; он рассчитан на запрос-ответ. +## Готовые безопасные команды (типовые задачи) + +### 1) Статус роутера + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + print /system/resource/print --proplist uptime,version,board-name,cpu-load,free-memory,total-memory +``` + +### 2) Список интерфейсов + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + print /interface/print --proplist .id,name,type,running,disabled,mtu +``` + +### 3) IP-адреса на интерфейсах + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + print /ip/address/print --proplist .id,address,interface,disabled +``` + +### 4) DHCP leases + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + 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 --user --password '' \ + 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 --user --password '' \ + 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 --user --password '' \ + 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 --user --password '' \ + 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` diff --git a/skills/mikrotik-api/references/common-operations.md b/skills/mikrotik-api/references/common-operations.md new file mode 100644 index 0000000..11f0e55 --- /dev/null +++ b/skills/mikrotik-api/references/common-operations.md @@ -0,0 +1,48 @@ +# Common MikroTik API Operations + +Этот файл — быстрый справочник по безопасным шаблонам. + +## Read-only first + +Всегда сначала делай read-only команды: + +- `/system/resource/print` +- `/interface/print` +- `/ip/address/print` +- `/ip/route/print` +- `/ip/dhcp-server/lease/print` + +Используй `.proplist`, чтобы не тянуть лишнее. + +## Примеры изменения (только после подтверждения) + +### Отключить интерфейс по .id + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + cmd /interface/set --attr .id=*1 --attr disabled=yes +``` + +### Включить интерфейс + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + cmd /interface/set --attr .id=*1 --attr disabled=no +``` + +### Добавить IP-адрес на интерфейс + +```bash +python3 {baseDir}/scripts/routeros_api.py \ + --host --user --password '' \ + cmd /ip/address/add --attr address=192.168.50.1/24 --attr interface=bridge +``` + +## Валидация после изменения + +После `set/add/remove` сразу выполнить соответствующий `print` и проверить, что: +- ожидаемое поле изменилось; +- нет `!trap`; +- роутер доступен.