一些routeros-script折腾随记:修订间差异
来自三线的随记
小无编辑摘要 |
小 (Admin移动页面一些mikrotik-routeros-script折腾随记至一些routeros-script折腾随记,不留重定向) |
||
| (未显示同一用户的3个中间版本) | |||
| 第48行: | 第48行: | ||
:if ( $pppoeUptimeHour > 5 or $pppoeUptimeHour < 3 ) do={ | :if ( $pppoeUptimeHour > 5 or $pppoeUptimeHour < 3 ) do={ | ||
:log info "PPPOE connection uptime not as expected! will be restarted..." | :log info "PPPOE connection uptime not as expected! will be restarted..." | ||
/interface/pppoe-client/disable | /interface/pppoe-client/disable $pppoeInterface | ||
:log info " | :log info "$pppoeInterface disabled" | ||
delay 3 | delay 3 | ||
/interface/pppoe-client/enable | /interface/pppoe-client/enable $pppoeInterface | ||
:log info " | :log info "$pppoeInterface enabled" | ||
} | } | ||
} do {:log info "script running error: $e"} | } do {:log info "script running error: $e"} | ||
关联关键词: mikrotik | |||
[[分类:Router]] | [[分类:Router]] | ||
2025年7月28日 (一) 15:18的最新版本
第三方cn docs: https://mikrotik-doc-cn.readthedocs.io/zh/latest/source/Scripts/content.html
常用操作:
变量定义: 可以通过 :local 或者 :global 定义,区别就是作用域不一样
:local pppoeInterface "pppoe-sfp-telecom" :local pppoeUptime
:put 可以将定义好的变量输出到console,但是不能输出到log
一般情况下,Scripts 在运行的时候,如果出现异常,不会有异常信息,只有简单的一句话:
script,error executing script script-test from xxxxxxx failed, please check it manually
可以通过类似以下方式把 exception (e) 打到log中方便排查
:onerror e {
:local pppoeInterface "pppoe-sfp-telecom"
:local pppoeUptime
[/interface/pppoe-client/monitor $pppoeInterface once do={:set pppoeUptime $uptime} ]
:log info "PPPoE interface uptime: $pppoeUptime"
} do {:log info "script running error: $e"}
some example:
用于判断 pppoe 连接时间,如果不在 3-5 点,就运行指定的脚本
:onerror e {
:local pppoeInterface "pppoe-sfp-telecom"
:local pppoeUptime
:local pppoeUptimeHour
:local dayPos
:local hourSemicolonPos
:local timeCutPosStart 0
[/interface/pppoe-client/monitor $pppoeInterface once do={:set pppoeUptime $uptime} ]
:log info "PPPoE interface uptime: $pppoeUptime"
:set dayPos [:find $pppoeUptime "d"]
:if ($dayPos >0) do={
:set timeCutPosStart ($dayPos + 1)
#:log debug "day pos found."
}
:log info "timeCutPosStart: $timeCutPosStart"
:set hourSemicolonPos [:find $pppoeUptime ":"]
:set pppoeUptimeHour [:pick $pppoeUptime $timeCutPosStart $hourSemicolonPos]
:log info "pppoeUptimeHour: $pppoeUptimeHour"
:if ( $pppoeUptimeHour > 5 or $pppoeUptimeHour < 3 ) do={
:log info "PPPOE connection uptime not as expected! will be restarted..."
/interface/pppoe-client/disable $pppoeInterface
:log info "$pppoeInterface disabled"
delay 3
/interface/pppoe-client/enable $pppoeInterface
:log info "$pppoeInterface enabled"
}
} do {:log info "script running error: $e"}
关联关键词: mikrotik