社区讨论

雷竞技网站MikroTik应用
dke
新手
主题作者
职位: 46
加入: 2019年12月10日星期二晚上11:30
地点:奥地利

区分RouterOS v6。l雷竞技X和v7.x

2022年8月22日星期一下午2:15

你好,

是否有正确的方法来区分RouterOS v6 ?l雷竞技X和v7.xin a configuration script?
我试着
代码:选择所有
/system resource:global versionStr [get value-name=version]:if ([:pick $versionStr 0] < 7) do={/log info "Found Roul雷竞技terOS v6.x."/system ntp client set enabled=yes primary-ntp=192.168.144.210} else={/log info "Found Rol雷竞技uterOS v7.x."/system NTP client set enabled=yes servers=192.168.144.210 /system NTP server set enabled=yes}
但是Rol雷竞技uterOS似乎解析了if括号内的内容,尽管它没有进入其中,所以它会抛出错误,就像
代码:选择所有
primary-ntp
Key不再可用:
代码:选择所有
…设置enabled=yes primary-ntp=192.168.144.210期望的命令结束(第4行第19列)
谢谢,
丹尼尔
sid5632
长期会员
长期会员
职位: 521
加入: 2017年2月17日星期五下午6:05

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年8月22日星期一下午2:30

你可能需要这样的东西:
代码:选择所有
:do {[:parse "/system NTP client set enabled=yes primary-ntp=192.168.144.210"]} on-error={}
用户头像
Jotne
论坛专家
论坛专家
职位: 3186
加入: 2016年12月24日星期六上午11:17
地点:Magrathean

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年8月22日星期一晚上8:12

我确实用它来测试RouterOS是7还是其他版本l雷竞技
代码:选择所有
:if ([:tonum [:pick [/system resource get version] 0 1]] > 6) do={如果Router os是7,则运行此命令。x+} else={此部分运行,如果路由器是6 .x或更低}
dke
新手
主题作者
职位: 46
加入: 2019年12月10日星期二晚上11:30
地点:奥地利

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年9月8日星期四下午5:46

你可能需要这样的东西:
代码:选择所有
:do {[:parse "/system NTP client set enabled=yes primary-ntp=192.168.144.210"]} on-error={}
工作中,非常感谢!

完整的,更正的脚本:
代码:选择所有
:global versionStr [/system resource get version]:if ([:pick $versionStr 0] < 7) do={:do {[:parse "/system ntp client set enabled=yes primary-ntp=192.168.144.210"]} on-error={}:do {[:parse "/system ntp client set enabled=yes servers=192.168.144.210"]} on-error={}:do {[:parse "/system ntp server set enabled=yes"]} on-error={}}
用户头像
Jotne
论坛专家
论坛专家
职位: 3186
加入: 2016年12月24日星期六上午11:17
地点:Magrathean

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年9月8日星期四下午6:42

从我所学到的rextended,您应该避免on-error。
找出可能出错的地方,编写一个不会失败的脚本。
也许rextended会帮忙的。:)
sid5632
长期会员
长期会员
职位: 521
加入: 2017年2月17日星期五下午6:05

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年9月9日星期五凌晨3:16

你当时显然没有阅读或理解问题。
V6和V7之间存在语法差异。你不可能做出不会失败的东西,除非已经说过了。
用户头像
rextended
论坛专家
论坛专家
职位: 10867
加入: 2014年2月25日星期二下午12:49
地点:靠近猫……
联系人:

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年9月9日星期五上午4:03

仅检查带有NTP…的RouterOS版本是不够的。l雷竞技

这只是检查的示例,而不是绕过语法检查的示例。
代码:选择所有
/系统资源:全局rosVer [:tonum [:pick [get version] 0 1]]:if ($rosVer~"(6|7)") do={:if ($rosVer = 6) do={:put "检测到的RouterOS 6" /系统包:if ([:lel雷竞技n [find where name="ntp"]] = 1) do={:put "未安装ntp包,使用SNTP"}}:if ($rosVer = 7) do={:put "检测到的RouterOS 7":put "ntp包始终存在"}}else={:put "无法识别的RouterOS版本:>$rosVer<"}
用户头像
rextended
论坛专家
论坛专家
职位: 10867
加入: 2014年2月25日星期二下午12:49
地点:靠近猫……
联系人:

Re:区分RouterOS v6。l雷竞技X和v7.x

2022年9月9日星期五上午4:13

这是没有onhorror-resume-next的代码
代码:选择所有
/system resource:global rosVer [:tonum [:pick [get version] 0 1]]:global priNTP 0.0.0.0:global secNTP 0.0.0.0:if ($rosVer~"(6|7)") do={:local setNTP "":if ($rosVer = 6) do={/system package:if ([:len [find where name="ntp"]] = 1) do={:set setNTP "/system ntp client set enabled=yes primary-ntp=$priNTP secondary-ntp=$secNTP;\ /system ntp server set enabled=yes"} else={:set setNTP "/system ntp client set enabled=yes primary-ntp=$priNTP secondary-ntp=$secNTP"}:if ($rosVer = 7) do={:set setNTP "/system ntp client set enabled=yes servers=$priNTP,$secNTP;\ /system ntp server set enabled=yes"}:execute "$setNTP"} else={:put "无法识别的RouterOS版本:>l雷竞技$rosVer<"}

谁在线?

浏览本论坛的用户:jeremyb3位客人

Baidu
map