Mikrotik :execute 命令 return 有什么作用,我可以用它做什么?

What does the Mikrotik :execute command return and what can I do with it?

当我从 Mikrotik SSH 运行 执行以下命令时,我看到一个星号后跟一个十六进制值,看起来像 *4e

:put [:execute { :ping localhost count=10 }]

根据Mikrotik wiki:execute命令作为脚本作业在后台执行命令。当我打印出当前 运行ning 作业时,我没有看到上面的输出与此输出之间的任何关系。

[admin@MikroTik] > /system script job print
 # SCRIPT                       OWNER                      STARTED
 0                              admin                      jun/05/2017 16:58:09
 1                              admin                      jun/05/2017 17:07:31

那么,输出代表什么,我该如何使用它?

您得到的 return 是一个 MikroTik RouterOS 内部 ID。在本例中,这是 运行ning 作业的内部 ID。内部 ID 是对它们所代表的对象的不可变引用,并且具有在命令执行之间相同的优点,即使发生并发操作会更改对象 #,如打印所示。

您可以通过 * 后跟一个十六进制数来识别内部 ID。在某些情况下,return 有多个项目,这在 find 中很常见,您将得到一个 ; 分隔的 ID 列表,例如:

*d;*1;*18;*3;*19;*1a;*20

内部ID可以在运行其他命令中使用,就像可打印的数字一样,并通过前面的*来区分。如果给出了多个内部 ID 的列表,该命令将对每个项目 运行。

有关内部 ID 数据类型的信息可以在 Scripting Manual 中找到。内部 ID 不遵循任何顺序,您不应该假设它们遵循任何顺序。要从打印输出中显示的 ID 中获取对象的内部 ID,可以使用 :put [get <id>],其中 <id> 是可打印 ID - 输出将内部 ID 显示为 .id 属性.