/system scheduler add interval=30s name=schedule_check_changes2 on-event="#=================================================\r\ \n# Desenvolvido por Francisco Neto \r\ \n# www.redesbasil.com \r\ \n#=================================================\r\ \n\r\ \n\r\ \n:global log 0\r\ \n:global FTPServer 10.20.30.1\r\ \n:global FTPPort 64111 \r\ \n:global User admin\r\ \n:global Pass \"\"\r\ \n\r\ \n/tool fetch mode=ftp address=\$FTPServer user=\$User password=\$Pass port=\$FTPPort src-path=configs/version.txt\r\ \n\r\ \n:if (\$log = 1 ) do={/log warning message=\"Arquivo biaxado\"}\r\ \n\r\ \n:global ModuleList [:toarray [file get version.txt contents ]]\r\ \n\r\ \n:foreach RemoteModule in=\$ModuleList do={\r\ \nput \$RemoteModule\r\ \n# Verifica se \E9 o modulo de Update\r\ \n:if (\$RemoteModule ~ \"UpdateVersion\") do={\r\ \n:global VersionToDownload [:pick \$RemoteModule 14 20] \r\ \n:global MyRouterOSVersion [/system resource get version];\r\ \n:global MyRouterOSVersion [pick \$MyRouterOSVersion 0 ([find \$MyRouterOSVersion \"(\"] - 1) ]\r\ \n\r\ \n# Compara vers\E3o para download com a versao local\r\ \n:if (\$VersionToDownload != \$MyRouterOSVersion ) do={\r\ \n:global Platform [/system resource get architecture-name];\r\ \n:if (\$Platform = \"x86_64\" ) do={:global Platform \"x86\"}\r\ \n:global DownloadPath (\"routeros/routeros-\".\$Platform.\"-\".\$VersionToDownload.\".npk\")\r\ \n\r\ \n:if (\$log = 1 ) do={/log warning message=\"Iniciando download do pacote de atualiza\E7\E3o\"}\r\ \n/tool fetch mode=ftp address=\$FTPServer user=\$User password=\$Pass port=\$FTPPort src-path=(\$DownloadPath)\r\ \n:if (\$log = 1 ) do={/log warning message=\"Download finalizado, vamos pro reboot\"}\r\ \n:delay 4\r\ \n# Executa comando de reboot ou de downgrade\r\ \n:if (\$VersionToDownload > \$MyRouterOSVersion) do={/system reboot} else={/system package downgrade}\r\ \n} else={\r\ \n:if (\$log = 1 ) do={/log warning message=\"Sem altera\E7\F5es para a vers\E3o do RouterOS\"}\r\ \n/quit}\r\ \n\r\ \n}\r\ \n\r\ \n# Pega nome do modulo sem a versao\r\ \n:global NoVersionFileName [pick \$RemoteModule 0 ([find \$RemoteModule \"_version_\"]+8)]\r\ \n\r\ \n#Verifica se o modulo existe\r\ \nif ([/file print count-only where name~\$NoVersionFileName] = 0 ) do={\r\ \n/tool fetch mode=ftp address=\$FTPServer user=\$User password=\$Pass port=\$FTPPort src-path=(\"configs/\" . \$RemoteModule)\r\ \ndelay 3\r\ \n/import \$RemoteModule\r\ \n:if (\$log = 1 ) do={/log warning message=(\"Criando modulo = \" . \$NoVersionFileName )}\r\ \n} else={\r\ \n\r\ \n# Se o modulo ja exite faz verificacoes de versao \r\ \n:global RemoteModuleVersion [pick \$RemoteModule ([find \$RemoteModule \"_version_\"]+9) [find \$RemoteModule \".\" ]]\r\ \n:global LocalModule [/file get [find name~\$NoVersionFileName] name ]\r\ \n:global LocalModuleVersion [pick \$LocalModule ([find \$LocalModule \"_version_\"]+9) [find \$LocalModule \".\" ]]\r\ \n\r\ \n# Compara vers\E3o remota com a local e atualiza se necessario\r\ \nif (\$RemoteModuleVersion != \$LocalModuleVersion ) do={\r\ \n/file remove [find name~\$LocalModule]\r\ \n/tool fetch mode=ftp address=\$FTPServer user=\$User password=\$Pass port=\$FTPPort src-path=(\"configs/\" . \$RemoteModule)\r\ \ndelay 3\r\ \n/import \$RemoteModule\r\ \n:if (\$log = 1 ) do={/log warning message=(\"Efetuada altera\E7\F5es para o modulo = \" . \$NoVersionFileName )}\r\ \n\r\ \n} else={:if (\$log = 1 ) do={/log warning message=(\"Sem altera\E7\F5es para o modulo = \" . \$NoVersionFileName )}}\r\ \n\r\ \n\r\ \n\r\ \n} \r\ \n\r\ \n}\r\ \n\r\ \n\r\ \n" policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon start-time=startup #Fim