執行指令
同一份指令送到選定設備,集中查看進度與輸出,讓例行工作更順手。
這一頁是批次執行的細節。還沒跑過任何東西的話,先看快速上手。
挑對選項#
四種連線方式、五個選項——因為 WinBox 的 8291 有兩種把腳本送過去的做法。 它們能做的事不一樣,不能互相替代。
| 選項 | RouterOS | 怎麼送過去 | 最長能送多少 |
|---|---|---|---|
| 8291 一行一行送(預設) | 6.x/7.x | 像你坐在終端機前面逐行打,靠設備回的提示字判斷一行跑完了沒 | 256 KiB |
| 8291 整包送 | 6.x/7.x | 整份一起執行;腳本很長的時候畫面回顯會慢一點 | 24 KiB |
| SSH (選用) | 6.x/7.x | 整段透過 SSH 送出去執行 | 60 KiB |
| API (選用) | 只有 7.x | 整段當成字串交給設備執行 | 60 KiB |
| REST (選用) | 只有 7.x | 整段透過網頁介面的那個通道送出去執行 | 60 KiB |
什麼時候用哪一個#
- 一行一行送是預設值,多數情況下也是對的答案。它能送的最長,而且 6.x 跟 7.x 都通。
- 整包送用在腳本需要自己宣告變數的時候。逐行餵給終端機的話,
:local 宣告的變數活不過那一行——這是送法本身的性質,不是程式少做了什麼。
- SSH 適合 8291 被擋、但 SSH 通的環境,需要設備上的
/ip service ssh是開的。 - API/REST 給已經統一用這兩種方式的環境。兩者執行指令都只有 RouterOS 7.x 可以,
REST 還需要 /ip service www 或 www-ssl。
寫指令#
那一格就是純文字,旁邊有一個數字告訴你目前用了多少、這個選項最多能送多少。 歷史會留著你跑過的內容,整份也能存成檔案再叫回來, 所以例行檢查不用每次重打。
適合先拿來試的、只會讀取的指令:
/system resource print
/interface ethernet print where running
/ip address print至於會改到設備的指令,請自己在自己的設備上負責判斷。有兩個習慣值得養成:
- 先對同一批設備跑一次對應的查詢指令,確認你即將改的到底是什麼。
- 特別小心那些可能把你自己連線那條路切斷的指令——防火牆規則、停用介面、改位址。
程式沒辦法幫你把那些復原,斷掉的連線也一樣。
一次跑幾台、每台等多久#
並行數是同時處理幾台設備,每台逾時是任何一台最多能耗多久才被放棄。
- 最多可以填到 100。超過建議的 20 時欄位會提醒你一聲,但不會擋你。
- 調高不一定比較快。設備本身、中間的網路、還有你自己的電腦,都可能先變成瓶頸。
- 逾時是一台一台算的,所以一台特別慢的設備不會吃掉其他台的時間。
送出前會先問你#
按下執行已勾選並不會立刻送出任何東西。 確認畫面會先跳出來,告訴你即將對幾台執行什麼。 不會因為你手滑點了一下,指令就已經在路由器上跑起來了。
讀結果#
結果在3. 檢視結果裡一台一列,有狀態、花了多久、它回了什麼。 這裡只列這一輪的設備。
| 狀態 | 意思 |
|---|---|
| 執行中 | 還在跑。 |
| 已完成 | 設備跑到了你那份指令的最後一行。 |
| 連線失敗 | 根本沒連上,什麼都沒送出去。 |
| 結果不確定 | 指令已經送出去了,然後連線斷掉、或執行被取消。 |
| 已取消 | 你自己停掉了這一輪。 |
按取消會怎樣#
停止會取消這一輪。它實際代表什麼,要看你用的是哪一種連線方式:
- 走 8291 時,取消會把那條連線停掉。
- 走 API、SSH、REST 時,取消只是讓程式不再等。
它不能保證設備那邊的指令也停了——設備很可能會把已經收到的東西跑完。
不管哪一種,指令已經送出去的那幾台會被報成結果不確定而不是失敗, 而且程式不會自動重送。默默重試,正是一條指令變成兩條的原因。
跑完之後#
- 加入暫存區(本輪問題)把所有有狀況的設備整組存起來。
- 重試問題設備只針對那幾台重跑一次。
- 複製輸出與複製狀態摘要把結果放到剪貼簿。