一些routeros-script折腾随记:修订间差异
来自三线的随记
(创建页面,内容为“第三方cn docs: https://mikrotik-doc-cn.readthedocs.io/zh/latest/source/Scripts/content.html === 常用操作: === 变量定义: 可以通过 <code>:local</code> 或者 <code>:global</code> 定义,区别就是作用域不一样 :local pppoeInterface "pppoe-sfp-telecom" :local pppoeUptime <code>:put</code> 可以将定义好的变量输出到console,但是不能输出到log 一般情况下,Scripts 在运行的时候,如果出现异常,不会有…”) |
小 (Admin移动页面一些mikrotik-routeros-script折腾随记至一些routeros-script折腾随记,不留重定向) |
||
| (未显示同一用户的6个中间版本) | |||
| 第1行: | 第1行: | ||
{{DISPLAYTITLE:routeros-script折腾随记}} | |||
第三方cn docs: https://mikrotik-doc-cn.readthedocs.io/zh/latest/source/Scripts/content.html | 第三方cn docs: https://mikrotik-doc-cn.readthedocs.io/zh/latest/source/Scripts/content.html | ||
| 第16行: | 第18行: | ||
} do {:log info "script running error: $e"} | } 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 | |||
[[分类: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