mcpField
M
mikrotik-routeros

mikrotik-routeros

github.com/bastos云与 DevOps753 次安装12 周前更新
代码仓库

关于 mikrotik-routeros

面向 MikroTik RouterOS 用户的命令行与脚本技能,用于生成、审查和排查配置,默认针对 RouterOS v7,并将变更前检查、验证和回滚纳入流程。

主要功能

  1. 01生成与审查 RouterOS 命令
  2. 02编写和排查 RouterOS 脚本
  3. 03按需查阅官方文档参考
  4. 04规划备份、安全模式与回滚
  5. 05检查命令幂等性及配置风险

适用场景

  1. 01制定防火墙或 VLAN 配置变更
  2. 02编写可复用的 .rsc 文件或系统脚本
  3. 03检查远程网络变更对管理访问的影响
  4. 04验证现有规则并规划回滚步骤

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bastos/skills --skill mikrotik-routeros

安装后在 Claude Code 中输入/mikrotik-routeros确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
config-change-workflows.md
official-docs.md
recipes.md
routeros-cli.md
routeros-scripting.md

详细介绍

MikroTik RouterOS 命令行与脚本

使用此技能生成、审查或排查 RouterOS 命令行配置和脚本。除非用户指定其他版本,否则以 RouterOS v7 为目标。

加载参考资料

在生成命令前,先阅读最相关的参考资料:

  • references/official-docs.md - 官方 MikroTik 文档和版本说明的索引。
  • references/routeros-cli.md - 终端语法、路径、项目定位、引号和 SSH 执行。
  • references/routeros-scripting.md - RouterOS 脚本结构、变量、函数、错误处理和脚本存储库行为。
  • references/config-change-workflows.md - 备份、导出、安全模式、导入、重置和回滚规划。
  • references/recipes.md - 常见配置任务的可复用命令模式。

操作模式

  1. 确定用户需要实时执行、命令计划、可复用的 .rsc 文件,还是 /system script 条目。
  2. 只收集避免配置不安全或错误所需的信息:RouterOS 版本、型号、管理 IP/接口、WAN/LAN 接口名称、网桥/VLAN 设计,以及现有规则顺序。
  3. 优先使用可安全粘贴到 RouterOS 终端的命令。使用绝对菜单路径,例如 /ip/firewall/filter,不要依赖当前菜单。
  4. 使用稳定标识符:项目名称、注释、default-name 值或 [find ...] 筛选条件。生成脚本时避免使用数字项目 ID,因为 CLI 编号仅在当前会话有效。
  5. 在可行时确保命令具备幂等性。添加重复对象前,使用 [find ...] 检查是否已存在。
  6. 将预检、更改、验证和回滚分开。路由器配置错误可能导致管理访问中断。

安全默认设置

  • 对远程网络、防火墙、路由、网桥、VLAN 或地址更改,建议先导出配置,并在更改前启用安全模式或准备分阶段回滚方案。
  • 切勿猜测凭据、公网 IP、接口用途或防火墙规则顺序。如果缺少的信息会妨碍操作,请使用占位符或向用户询问。
  • 除非用户明确要求并了解相关信息暴露的风险,否则不要包含真实密码、私钥、共享密钥或 show-sensitive 输出。
  • 优先提供 SSH 或本地终端示例。除非是明确隔离的恢复场景,否则不要建议使用 Telnet。
  • 标明会重启、重置、禁用管理服务、移除地址/路由或更改 input 防火墙策略的命令。
  • 如果用户要求破坏性重置,先说明确切后果,并提供备份/导出步骤。

回答格式

对于配置更改,使用以下结构:

## Preflight
<read-only commands to inspect state and save config>

## Commands
<RouterOS commands, grouped by subsystem>

## Verify
<commands to prove the intended state and connectivity>

## Rollback
<minimal commands or restore path>

对于脚本,使用以下结构:

## Script
<source code or /system script add/set command>

## Install
<commands to add the script and required policy>

## Test
<manual run, logs, dry-run behavior if applicable>

## Schedule or Trigger
<scheduler/netwatch/button hook only if requested>

RouterOS 命令风格

  • 使用斜杠分隔格式编写命令:/ip/address/print、/system/script/add、/interface/bridge/vlan/add。
  • 保持 param=value 紧凑;RouterOS 不允许在 = 两侧留空格。
  • 字符串含空格或特殊字符时使用引号:comment="managed by routeros-script"。
  • 使用注释作为生成规则和计划任务的持久锚点。
  • 使用 print terse 或 print detail 捕获状态,并使用 print where ... 执行定向检查。
  • 使用 export terse 获取可移植的命令输出;二进制 /system backup 仅用于同一设备的还原场景。

幂等模式

添加最多只应存在一个的对象时,使用此模式:

:if ([:len [/ip/firewall/address-list/find list="mgmt-allow" address="203.0.113.10"]] = 0) do={
    /ip/firewall/address-list/add list="mgmt-allow" address="203.0.113.10" comment="managed: admin workstation"
}

对于现有对象,仅当预期 find 表达式恰好匹配一个项目时,才使用 set [find ...] ...。如果可能匹配多个项目,请先打印结果并让用户选择,或缩小筛选范围。

验证清单

交付命令前,请检查:

  • 接口名称与用户的设备相符,或明确标注为占位符。
  • 防火墙规则位于宽泛的丢弃/拒绝规则之前。
  • 在设置任何限制性输入策略之前,先添加管理访问允许规则。
  • 脚本在使用变量前先声明变量,并使用局部作用域,除非有意设置持久性。
  • 导入文件使用 RouterOS 语法,而非 Bash。
  • 标注依赖特定版本的功能,并在需要时链接到官方文档。

评论

支持 Markdown