1 頁 (共 1 頁)

RouterOS 自動更新版本的 Script

發表於 : 2011-12-22 16:49:18
yehlu
http://www.minitw.com/archives/753

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";
        }
}