ShellRS
ShellRS is a free, open-source SSH client written in Rust: host management, terminals, WinSCP-style SFTP and port forwarding in one GPU-rendered window, for macOS, Windows and Linux.
Create and verify network baselines for MikroTik RouterOS devices
AI summary · website content
Developer toolsJavaScript · ShellGitHub @sinnokenOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗由 MikroTik RouterOS 的 CLI 輸出,一次建立網路現況基準(Single Source of Truth):拓樸、介面、VLAN、MAC/IP 位置、路由、防火牆規則,並列出資料之間的矛盾與缺漏。
vendor/)、可完全離線:直接雙擊 index.html 即可使用開啟 index.html(file:// 即可,不需伺服器)。main 分支也會由 deploy-pages.yml 部署到 GitHub Pages(https://sinnoken.github.io/topo-mikrotik/),一樣只在瀏覽器內處理。
按 建立基準… → 載入範例資料(已有基準時,從頁首的 資料中心 → 載入收集檔… 開啟同一個對話框)。範例刻意放了幾個問題,可以先看檢查結果長什麼樣子。
支援範圍是 RouterOS 7 以上(ADR-019)。要用自己的網路:依 收集清單 收集每台 RouterOS 的輸出(print 要加 detail without-paging,例外見收集清單開頭),合併成一個收集檔後貼上或選擇檔案。
多台設備可在 WSL/Linux 用 SSH 批次收集,產生可直接載入的收集檔:
cp tools/devices.csv devices.csv # 改成自己的設備清單
./tools/collect.sh devices.csv --dry-run
./tools/collect.sh devices.csv --output collection.txt
設備清單格式、選項、只重收失敗的指令與安全注意事項見收集清單 §0。
在 repo 根目錄產生的設備清單與收集檔(根目錄的 *.csv、*.txt)與下方 CLI 的 out/ 含設備位址與設定,已由 .gitignore 排除,不要提交;放在子目錄時請放到 repo 以外。
接下來每一步做什麼(研判、修正、下一輪的驗證與工作包)見使用說明「第一次使用」,畫面用語見名詞表。
tools/baseline.js 在 Node.js 上用和網頁相同的核心建立基準,並推進處理紀錄,適合排程定期執行。它只讀檔案,不連線設備。
node tools/baseline.js collection.txt -o out/ # 第一次:從空的處理紀錄開始
node tools/baseline.js collection.txt --ledger out/ledger.json -o out/ # 之後每一輪:傳入上一輪的處理紀錄
--profile <命名規則.json>、--expected-data <各類設備應收資料.json>、--expected <預期現況 ssot-expected/1>、--previous <上一輪 baseline.json>(主管摘要寫出與上一輪的增減;不是本工具同一個 schema 的基準時結束碼 2)、--now <ISO 日期或時間>(指定時輸出可重現;只寫日期也可以,不存在的日期會失敗)。用 --help 查看全部說明。out/:baseline.json(基準)、ledger.json(推進後的處理紀錄,可在網頁的資料中心匯入)、findings.json(檢查結果與處理狀態)、findings.csv/findings.md(檢查結果的 CSV 與 Markdown 報表,和網頁匯出的內容相同,處理狀態是推進後的)、sitedoc.md/sitedoc.csv(網路文件,和網頁資料中心的「網路文件」相同;有 --profile 時 zone 依它的 zones)、manager-summary.md(主管摘要,和網頁資料中心的「主管摘要」相同;有 --previous 時第一行寫出錯誤+警告與上一輪的增減)、summary.json(新出現、復發、豁免到期與待處理的錯誤/警告數),有 --expected 時另有 compare.json。0 成功,沒有復發,也沒有新的待處理錯誤/警告;1 成功,但有復發、新出現或豁免到期的待處理錯誤/警告(排程據此通知);2 執行失敗(參數錯誤、輸入讀不到、收集檔沒有認到任何設備的資料、處理紀錄/命名規則/預期現況/上一輪基準格式錯誤),訊息寫到 stderr,不輸出任何檔案。「沒有認到任何設備的資料」是收集檔都是空的,或沒有任何已收集的設備有資料或收集失敗的紀錄(例如只有註解、內容都認不得);全部連線失敗仍算一次有結果的收集(C02 回報)。0;所以通知失敗後用同一份收集檔重試不會再得到 1,要以上一次的 summary.json 補發。沒有 --expected 時會刪掉輸出目錄中上一次的 compare.json;--now 只寫日期或帶時區位移時正規化成 UTC。處理紀錄的推進規則和網頁相同,見設計說明 §10。頁首的流程步驟(輸入、檢視、研判、修正、驗證)切換左側的清單與中間的工作畫面,右側是詳細資料。每項功能的操作方式見使用說明。
| 步驟 | 功能 | 做什麼 |
|---|---|---|
| 輸入 | 資料中心與工作包 | 本輪的輸入(收集檔、上一輪基準、處理紀錄、命名規則、預期現況)、覆蓋率與輸出集中在一處;工作包是一個不壓縮的 ZIP,內含收集檔、基準、處理紀錄、命名規則、預期現況、報表與 patch,讀回時核對是不是同一輪,再一次帶回上一輪的基準與處理紀錄 |
| 輸入 | 建立前的預檢 | 貼上或選擇收集檔時,建立前就列出認到幾台設備與無法辨識的段落;要收集的指令與收集腳本的用法在設定的「收集與建立基準」(歡迎畫面有開啟它的按鈕) |
| 輸入 | 覆蓋率 | 每台設備收集了哪些資料、缺什麼、哪些指令收集失敗;可由未收集的設備產生 devices.csv 草稿 |
| 輸入 | 匯出 | 基準 JSON、檢查結果 CSV/Markdown、網路文件(站點說明書:設備清單、IP 規劃、VLAN 表、埠表、未結案事項與接受風險,Markdown/CSV,推論的欄位另外標示)、主管摘要(Markdown:錯誤與警告是否為 0、從外部進得來的(推論)、問題集中在哪、需要決定的事與處理順序;有載入上一輪基準時寫出增減)、預期現況、拓樸圖 PNG、處理紀錄、devices.csv 草稿(L4 矩陣的 CSV 在 L4 畫面) |
| 檢視 | 清單 | 設備、介面、IP、網段、MAC、VLAN 的完整清單,可以篩選 |
| 檢視、研判 | 拓樸圖 | 只畫 L2 鄰接(LLDP/CDP);沒有 LLDP 的設備以推論鏈路表示,終端畫在所屬設備下;MNDP 只證明廣播網域可達,不畫線 |
| 檢視、研判 | L2 埠圖與 L3 網段圖 | 工具列切換層級:L2 埠圖是設備框加埠,線接在埠上,可展開聚合;L3 網段圖畫網段、路由設備與(可選的)靜態與預設路由,標出重疊網段與重複 IP |
| 檢視、研判 | VRF | 位址、網段、路由與 ARP 依 VRF 分開(RouterOS 7 的 /ip vrf 與 routing-table):L3 網段圖每個 VRF 一個框;路由追蹤與可達性查詢可以選 VRF(來源位址在多個 VRF 時請你選,不猜);zone 矩陣可以依來源的 VRF 篩選;介面詳情寫出所屬的 VRF,設備的 VRF 設定與策略路由(/routing rule、路由表、mark-routing)在路由表視窗。只用 main 時畫面不變 |
| 檢視、研判 | VLAN 篩選 | 在設備圖與 L2 埠圖標出承載某個 VLAN 的鏈路,區分兩端都帶、推論、只有一端帶與只有一端可確認;在選單選的篩選一直保留,用選單的「不篩選」取消;由檢查結果、搜尋或連結帶入的篩選,工具列有「VLAN n ✕」可以取消 |
| 檢視、研判 | L4 可達性 | 工具列的另一層:來源 zone × 目的 zone 的防火牆與 NAT 結果(zone 矩陣,推論;另有「外部(Internet)」與「網路設備(管理)」兩個虛擬 zone,連到設備本身時也看 /ip service),每一格可展開明細(位址組、牽涉的規則與逐跳路徑);可達性查詢輸入來源、目的、協定與埠逐跳判斷;矩陣可匯出 CSV。規則詳情列出命中次數(print stats),並可計算這條規則在 L4 的影響 |
| 研判 | 檢查結果與處理狀態 | 依基準檢查列出錯誤、警告與提醒,可依檢查或依設備分組;每筆都附證據行號、常見原因與處理建議,可標為已排定修正、接受風險、誤報 |
| 研判 | 狀態式防火牆(F15) | 檢查 input/forward 是否放行已建立的連線(established)、丟棄 invalid 與預設動作;chain 最後會丟棄卻沒有放行已建立的連線時,回程不保證 |
| 研判 | 整批放行 dst-nat(F16) | forward 先放行所有經 dst-nat 的連線時,列出之後被架空的逐埠放行或丟棄 |
| 研判 | 管理面加固(F10–F14) | 從 /export 檢查 WAN 可達的 DNS 遠端查詢、MAC Telnet/WinBox、WAN 上的鄰居探索、SNMP 的 public community、WAN 上的 UPnP/Web Proxy/SOCKS/Bandwidth Server;設備詳情的「管理面設定」列出每項的值與依據,export 沒寫出的依出廠預設值推定並標推論 |
右側的基準狀態卡是該份 Snapshot 的檢查結果與覆蓋率,不代表即時網路健康狀態。
| 文件 | 內容 |
|---|---|
| 文件導覽 | 每份文件回答什麼問題、什麼時候更新 |
| 收集清單與輸入格式 | 收集指令、SSH 收集器、bundle-v1/files-v1 格式、支援範圍與限制 |
| 基準檢查 | 每項檢查的判斷條件、常見原因與處理 |
| 命名規則 | 命名 profile |
| 使用說明 | 第一次使用的步驟、一輪的流程、名詞表,以及依流程步驟排列的畫面操作 |
| 設計說明 | 模組、Snapshot 欄位、推論規則、比對、修正 patch、處理紀錄、工作包、規模 |
| 查詢介面 | SSOT.query 各查詢函式的參數與回傳 |
| 畫面架構 | 檢視層的狀態、資料來源、樣式、版面與匯出 |
| 版本紀錄 | 各版的變更 |
| 路線圖 | 接下來要做的功能、順序與完成條件 |
| 架構決策 |
只需要 Node.js(CI 使用 Node 22/24),不需安裝任何套件,也沒有 build 步驟。提交前執行:
npm test
git diff --check
其他指令、測試的種類與擴充方式見開發指南。
| 修正 | 修正計畫 | 依選取的檢查結果產生每台設備的 .rsc(套用、回復、驗證);目前 F01、F02、F06 可產生停用規則的指令;A12(DNS/NTP 伺服器不一致)可選擇改成多數(推論)或某一組的值,或標為接受風險。本工具只產生文字,不會連線或改動任何設備 |
| 驗證 | 本輪變化、處理紀錄、修正追蹤、改善趨勢 | 一輪輪收集後判定是否已修好(待處理、已排定修正、接受風險、誤報、已修好、復發),畫出改善趨勢;處理紀錄只存在這個瀏覽器,可在資料中心匯出與匯入,也會放進工作包 |
| 驗證 | 比對 | 與預期現況(ssot-expected/1)或之前匯出的舊基準比對,列出新增、移除與變更,並推論預期現況是否已過時(需要上一輪的基準);「研判」可只看新出現的檢查結果 |
| 右側 | 詳細資料 | 沒有選取時是基準狀態卡(待處理的錯誤/警告、覆蓋率);選取後是鄰居、介面、VLAN、MAC、路由表的摘要與收集到的原始輸出;設備的屬性下方有路由表、防火牆、管理面設定的入口。表格欄位少、次要資料寫在第二行,長清單預設收合、列多時分頁 |
| 右側 | 路由表視窗 | 設備的路由表開在畫面中間的大視窗:分頁是路由、VRF、/routing rule、路由表、OSPF 鄰接;路由依網段排序,少量時直接列出,多時依路由表與協定分組,可用位址或網段找包含它的路由;點一條路由看每個下一跳解析的 VRF 與擁有者,並可從這台追蹤到那個網段。右側的摘要列出路由最多的幾組與搜尋框 |
| 右側 | 防火牆視窗 | 設備的防火牆開在畫面中間的大視窗:分頁是規則(每個 chain 一組)、服務、interface list 與位址清單;點一條規則看命中次數、L4 影響與修正指令;沒有選規則時是 WAN/LAN 判斷(推論)與這台設備全部的修正 |
| 頁首 | 搜尋 | 依設備名、MAC、IP(可以只打前綴)、VLAN ID、介面名稱或描述搜尋,在圖上定位 |
| 拓樸圖工具列 | 路由追蹤 | 逐跳顯示(含等價多路徑 ECMP 與回程,可對調來源與目的),走到未收集的設備時標為無法驗證;工具列另有「匯出 PNG」 |
| 頁首 | 設定(⚙) | 一般(配色:跟隨系統(預設)、淺色、深色;預設版面:分層或快速);命名規則(內建與載入的清單、對目前基準的套用結果、載入、下載範本、匯出與移除);本機資料(每項資料的大小與最後更新、個別清除、下載全部與從備份還原、重設畫面偏好);收集與建立基準(一輪的流程、收集腳本與指令清單、建立基準、排程);關於(版本、資料格式、授權、文件連結)。選擇會保留,匯出的 PNG 固定淺色 |
| — | 儲存 | 基準與輸入存在瀏覽器(IndexedDB),下次開啟自動還原;設定的「清除基準」只清除基準與輸入,「本機資料」可以把所有資料下載成一個檔案再還原 |
| 重要決策的背景、選項與取捨(ADR) |
| 開發指南 | 專案結構、指令、測試、擴充、外部資產、CI |
| 發布前檢查表 | 真實瀏覽器的手動檢查 |
| CLAUDE.md、.github/copilot-instructions.md | 開發原則與 AI 協作分工 |