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";
}}
不在哪里工作的问题?
答案 0 :(得分:1)
如果从终端运行脚本,那么您将收到有用的错误消息,以帮助您更正自己的脚本。要运行脚本,请转到/system script
,然后运行print
获取脚本的编号。然后可以使用run <number>
运行该脚本。您还可以从print输出中看到脚本中突出显示的错误语法。
收到的第一个错误是:
预期的命令结束(第3行第11列)
这是因为您的变量名称包含-
,它不是变量名称的有效字符 - 请参阅Manual:Scripting#Variables。
通过简单地使变量mac
来纠正这个错误我注意到你在顶部声明的变量不是你在脚本和其他地方使用过的变量{{1 }}。这实际上是您下一次错误的原因:
语法错误(第7行第6列)
将所有变量更新为一致(mac
至dhcpip
和address
至a
)后,最后一个问题是i
未在任何地方定义。为此,您可以在脚本中的某处添加$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]
}