关于 mikrotik-routeros
面向 MikroTik RouterOS 用户的命令行与脚本技能,用于生成、审查和排查配置,默认针对 RouterOS v7,并将变更前检查、验证和回滚纳入流程。
主要功能
- 01生成与审查 RouterOS 命令
- 02编写和排查 RouterOS 脚本
- 03按需查阅官方文档参考
- 04规划备份、安全模式与回滚
- 05检查命令幂等性及配置风险
适用场景
- 01制定防火墙或 VLAN 配置变更
- 02编写可复用的 .rsc 文件或系统脚本
- 03检查远程网络变更对管理访问的影响
- 04验证现有规则并规划回滚步骤
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ bastos/ skills --skill mikrotik-routeros安装后在 Claude Code 中输入/mikrotik-routeros确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/config-change-workflows.mdofficial-docs.mdrecipes.mdrouteros-cli.mdrouteros-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- 常见配置任务的可复用命令模式。
操作模式
- 确定用户需要实时执行、命令计划、可复用的
.rsc文件,还是/system script条目。 - 只收集避免配置不安全或错误所需的信息:RouterOS 版本、型号、管理 IP/接口、WAN/LAN 接口名称、网桥/VLAN 设计,以及现有规则顺序。
- 优先使用可安全粘贴到 RouterOS 终端的命令。使用绝对菜单路径,例如
/ip/firewall/filter,不要依赖当前菜单。 - 使用稳定标识符:项目名称、注释、default-name 值或
[find ...]筛选条件。生成脚本时避免使用数字项目 ID,因为 CLI 编号仅在当前会话有效。 - 在可行时确保命令具备幂等性。添加重复对象前,使用
[find ...]检查是否已存在。 - 将预检、更改、验证和回滚分开。路由器配置错误可能导致管理访问中断。
安全默认设置
- 对远程网络、防火墙、路由、网桥、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