RouterOS要更新版本除了可以手動更新外(請參考更新與升級RouterOS的版本),也可以利用Script來進行更新。
參考mikrotik官方的wiki後,我把Script修改了一下,方便使用。
要使用前,要修改的地方只有1個:local upgradeTo "5.11",
把版本改成你想要更新的版本即可,例如:local upgradeTo "5.13"
執行後,Script會自動去官方網站下載符合該平台的更新檔下來,
下載完會自動重開機進行更新。
請注意:系統更新都有其風險,更新前請自行斟酌
代碼: 選擇全部
#Script在RouterOS 5.7中測試過
#Date:2011/12/20
#Script Descript:半自動更新RouterOS的系統版本
#reference:http://wiki.mikrotik.com/wiki/Auto_upgrade_script_V3.x
#----------------------------------
#要更新到那一個版本請在這邊設定
:local upgradeTo "5.11";
#----------------------------------
# newest version
:local lMajor;
:local lMinor;
# current version
:local vMajor;
:local vMinor;
:local myVer [/system resource get version];
:for i from=0 to=([:len $myVer] - 1) do={
:if ( [:pick $myVer $i] = ".") do={
:set vMajor [:tonum [:pick $myVer 0 $i]];
:set vMinor [:tonum [:pick $myVer ($i + 1) [:len $myVer]]] ;
}
}
:if ($vMajor < 3) do={
:log warning "RouterOS version too old ($vMajor.$vMinor), update script not compatible.RouterOS版本太舊,不支援V3以下的版本";
} else={
#取得本平台的種類 (architecture-name is not available in older 3.x versions)
:local platform [/system resource get architecture-name];
#設定版本
:local lVer $upgradeTo;
:for i from=0 to=([:len $lVer] - 1) do={
:if ( [:pick $lVer $i] = ".") do={
:set lMajor [:tonum [:pick $lVer 0 $i]];
:set lMinor [:tonum [:pick $lVer ($i + 1) [:len $lVer]]] ;
}
}
:if (($vMajor = $lMajor) && ($vMinor < $lMinor)) do={
:local pckgName "routeros-$platform-$lMajor.$lMinor.npk";
#設定要下載的位置
/tool fetch address=[:resolve "download2.mikrotik.com"] host="download2.mikrotik.com" mode=http src-path="/$pckgName";
:log info "Upgrade_script: 系統即將更新版本 Ver$upgradeTo";
/system reboot;
} else={
:log info "Upgrade_script: already latest version.系統已經是新的版本 Ver$myVer";
}
}