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]]] ;
}
}
......以下略
完整程式碼可參考http://www.minitw.com/download/UpgradeROS.txt
懶人包如下,於Winbox下開一個新的New Terminal後,貼上下面的code
接下來就可以在System -> Script裡面找到名叫 UpgradeROS 的Script
/system script
add name=UpgradeROS policy="ftp,reboot,read,write,policy,test,winbox,pass\
word,sniff,sensitive,api" source="#Script\A6bRouterOS 5.7\A4\A4\B4\FA\
\B8\D5\B9L\r\
\n#Date:2011/12/20\r\
\n#Script Descript:\A5b\A6\DB\B0\CA\A7\F3\B7sRouterOS\AA\BA\A8t\B2\CE\
\AA\A9\A5\BB\r\
\n#reference:http://wiki.mikrotik.com/wiki/Auto_upgrade_script_V3.x\r\
\n\r\
\n#----------------------------------\r\
\n#\ADn\A7\F3\B7s\A8\EC\A8\BA\A4@\AD\D3\AA\A9\A5\BB\BD\D0\A6b\B3o\C3\
\E4\B3]\A9w\r\
\n:local upgradeTo \"5.11\";\r\
\n#----------------------------------\r\
\n\r\
\n# newest version\r\
\n:local lMajor;\r\
\n:local lMinor;\r\
\n\r\
\n# current version\r\
\n:local vMajor;\r\
\n:local vMinor;\r\
\n\r\
\n:local myVer [/system resource get version];\r\
\n\r\
\n:for i from=0 to=([:len \$myVer] - 1) do={ \r\
\n\t:if ( [:pick \$myVer \$i] = \".\") do={ \r\
\n\t\t:set vMajor [:tonum [:pick \$myVer 0 \$i]]; \r\
\n\t\t:set vMinor [:tonum [:pick \$myVer (\$i + 1) [:len \$myVer]]] ;\
\r\
\n\t}\r\
\n}\r\
\n\r\
\n:if (\$vMajor < 3) do={\r\
\n\t:log warning \"RouterOS version too old (\$vMajor.\$vMinor), upd\
ate script not compatible.RouterOS\AA\A9\A5\BB\A4\D3\C2\C2\A1A\A4\A3\
\A4\E4\B4\A9V3\A5H\A4U\AA\BA\AA\A9\A5\BB\";\r\
\n} else={ \r\
\n\r\
\n# \A8\FA\B1o\A5\BB\A5\AD\A5x\AA\BA\BA\D8\C3\FE (architecture-n\
ame is not available in older 3.x versions)\r\
\n :local platform [/system resource get architecture-name];\r\
\n\r\
\n# \B3]\A9w\AA\A9\A5\BB\r\
\n :local lVer \$upgradeTo;\r\
\n\r\
\n\t:for i from=0 to=([:len \$lVer] - 1) do={ \r\
\n\t\t:if ( [:pick \$lVer \$i] = \".\") do={ \r\
\n\t\t\t:set lMajor [:tonum [:pick \$lVer 0 \$i]]; \r\
\n\t\t\t:set lMinor [:tonum [:pick \$lVer (\$i + 1) [:len \$lVer]]] ;\
\r\
\n\t\t}\r\
\n\t}\r\
\n\r\
\n\t:if ((\$vMajor = \$lMajor) && (\$vMinor < \$lMinor)) do={\r\
\n\t\t:local pckgName \"routeros-\$platform-\$lMajor.\$lMinor.npk\";\
\r\
\n#\B3]\A9w\ADn\A4U\B8\FC\AA\BA\A6\EC\B8m\r\
\n\t\t/tool fetch address=[:resolve \"download2.mikrotik.com\"] host=\
\"download2.mikrotik.com\" mode=http src-path=\"/\$pckgName\";\r\
\n\t\t:log info \"Upgrade_script: \A8t\B2\CE\A7Y\B1N\A7\F3\B7s\AA\A9\
\A5\BB Ver\$upgradeTo\";\r\
\n\t\t/system reboot;\r\
\n\t} else={\r\
\n :log info \"Upgrade_script: already latest version.\
\A8t\B2\CE\A4w\B8g\ACO\B7s\AA\BA\AA\A9\A5\BB Ver\$myVer\";\r\
\n }\r\
\n}"









