Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have RouterOS 5.14 on RB493G. I need to write script, that launches

/tool fetch ...

Execution of fetch may result in error, this is OK(URL may be sometimes unavailable). Script hangs on error. Is there any way to ignore it?


[admin@Mikrotik] >> /system script
0 name=safe-fetch source=
:global done
:global url

/tool fetch $url
:Set done=true

1 name=test source=
:global done
:global url=""

:set done false
:execute safe-fetch
:local counter 0
:while ( $done != true && $counter < 10 ) do={
    :set counter ($counter+1)
    :delay 0.2

if ($done = "true") do={
   :put "Fetch OK"
   } else={
   :put "Fetch ERROR"

Warning: not documented ":execute" is used.

share|improve this question
up vote 1 down vote accepted

It seems that there isn't error handling in this kind of scripts. You should probably adopt the solution proposed by this guy:

So you have to have 2 scripts, one that runs and does stuff and handles situation when some value is not received as expected, and other script does the job, that can fail. as a result, if second script fails, first one that called second script to do the job will continue.

share|improve this answer
Thank you, this works. Mikrotik scripts are very poor and crooked :( – Selivanov Pavel May 27 '12 at 0:55
"You may award your bounty in 6 hours." - the bounty will be yours tomorrow. – Selivanov Pavel May 27 '12 at 1:03
I've added :delay to reduce processor load with empty cycle – Selivanov Pavel May 27 '12 at 1:04

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.