【问题标题】:mikrotik dynamic IP to static with commentmikrotik 动态 IP 到带有注释的静态 IP
【发布时间】:2017-07-13 10:41:25
【问题描述】:

mikrotik 脚本自动将动态 IP 更改为静态 IP,注释为日期

:local comment
:local address
:local mac-address
{
/ip dhcp-server lease
:foreach a in=[find where dynamic] do={
:set dhcpip [ get $i address ];
:set mac [ get $i mac-address ];

add address=$dhcpip mac-address=$mac comment="$date";
}}

问题出在哪里?

【问题讨论】:

    标签: dynamic static ip mikrotik


    【解决方案1】:

    如果您从终端运行脚本,那么您会收到有用的错误消息,以帮助您更正自己的脚本。要运行脚本,请转到/system script,然后通过运行print 获取脚本的编号。然后可以使用run <number> 运行该脚本。您还可以从 print 的输出中看到脚本中突出显示的错误语法。

    收到的第一个错误是:

    预计命令结束(第 3 行第 11 列)

    这是因为您的变量名包含 -,它不是变量名的有效字符 - 请参阅 Manual:Scripting#Variables

    在通过简单地创建变量mac 来纠正此错误时,我注意到您在顶部声明的变量不是您在脚本和其他地方使用的变量mac。这实际上是您下一个错误的原因:

    语法错误(第 7 行第 6 列)

    在将所有变量更新为一致之后(dhcpipaddressai)最后一个问题是 $date 没有在任何地方定义。为此,您可以在脚本中的某处添加:local date [/system clock get date]。有了它,您应该能够修复自己的脚本 - 我强烈建议您这样做,以便从错误中吸取教训。

    除了糟糕的实现之外,对该脚本的一个批评是,您可以使用make-static 命令,而不是存储到变量中。以下是执行此操作的脚本:

    /ip dhcp-server lease
    :foreach i in=[find dynamic] do={
      make-static $i
      set $i comment=[/system clock get date]
    }
    

    如果您不需要注释,则可以使用单个命令将所有动态租约设为静态:

    /ip dhcp-server lease make-static [find dynamic]
    

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 1970-01-01
      • 2013-07-20
      • 2016-08-27
      • 1970-01-01
      • 2015-03-10
      • 2015-06-04
      • 1970-01-01
      • 2016-07-25
      相关资源
      最近更新 更多