自 RouterOS v6.2 起更新

自 RouterOS v6.2 起更新

我在 RB493G 上安装了 RouterOS 5.14。我需要编写脚本来启动

/tool fetch ...

执行 fetch 可能会出错,这没关系(URL 有时可能不可用)。脚本因出错而挂起。有什么方法可以忽略它吗?


解决方案:

[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="google.com"

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

警告:未记录使用“:execute”。

答案1

看起来没有错误处理在这种脚本中。你应该采用这家伙

因此,您必须有 2 个脚本,一个脚本运行并执行一些操作,并处理未按预期收到某些值的情况,另一个脚本执行该工作,但可能会失败。因此,如果第二个脚本失败,则调用第二个脚本执行工作的第一个脚本将继续。

答案2

自 RouterOS v6.2 起更新

您现在可以创建一个do带有错误处理程序的块:

:do {
  /tool fetch $url
  :put "Fetch OK"
} on-error={ :put "Fetch ERROR"};

相关内容