ShellRS
ShellRS 是一款免費、開源的 SSH 客戶端,使用 Rust 編寫:主機管理、終端機、WinSCP 風格的 SFTP 與埠轉發,全部於一個 GPU 渲染視窗中,支援 macOS、Windows 與 Linux。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 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 協作分工 |