在上一篇文章 06.设置流量整形 中,已经设置了 QoS ,现在开始设置系统定时任务。
注意:
如果后续将根据文章 09.设置系统参数 创建额外的系统管理员账户,建议优先执行账户相关设置。
由于涉及运行权限,因此在创建定时器和脚本时,请使用具有管理权限的系统账户。
RouterOS 提供了强大的脚本能力,搭配系统的定时器功能,可以实现一些高级自动化操作。
在正式开始之前需要做一些准备工作:
-
要使用 RouterOS 发送邮件功能,需要准备一个邮箱并开启
SMTP
服务,推荐使用 QQ 邮箱或 163 邮箱 -
对于使用 CHR 版本 RouterOS 的软路由
- 系统自动更新脚本,请查阅文件 ros_sys_upgrade_worker.chr.conf
- 证书自动更新脚本,请查阅文件 ros_certs_update_worker.conf
- 系统日志邮件脚本,请查阅文件 ros_email_log_worker.conf
- 系统资源邮件脚本,请查阅文件 ros_email_res_worker.chr.conf
-
对于使用 Mikrotik 原生 RouterOS 的硬路由
- 系统自动更新脚本,请查阅文件 ros_sys_upgrade_worker.native.conf
- 证书自动更新脚本,与 CHR 版本相同
- 系统日志邮件脚本,与 CHR 版本相同
- 系统资源邮件脚本,与 CHR 版本略有不同,请查阅文件 ros_email_res_worker.native.conf
定时器和脚本配置较为复杂,因此推荐使用 RouterOS 自带的终端工具 Terminal
进行配置。
如果使用第三方终端工具登录 RouterOS ,ssh
命令演示如下。
## 使用管理员账户 admin 进行 SSH 登录
$ ssh [email protected]
## 修改了 SSH 服务端口时的 SSH 登录
## 演示端口号为 5022
$ ssh [email protected] -p 5022
RouterOS 的定时器将会创建 6 个,分别为:
-
定时触发系统日志邮件脚本
-
定时触发系统资源邮件脚本
-
定时触发系统自动更新脚本
-
定时触发证书自动更新脚本
-
定时断开 PPPoE 连接
-
定时重连 PPPoE 连接
RouterOS 的脚本将会创建 4 个,分别为:
-
系统日志邮件脚本
-
系统资源邮件脚本
-
系统自动更新脚本
-
证书自动更新脚本
在 RouterOS 的命令行环境下,将以下命令一次性全部粘贴到 CLI
中执行,即可初始化定时器和脚本。
如果不便复制代码,请查阅文件 ros_schedule_script.pppoe.conf 。
/system scheduler
add comment="sysconf: system log email" interval=45m name=system-log-timer on-event="/system script run email-log-worker" policy=read,write,policy,test start-time=00:00:00
add comment="sysconf: system resource email" interval=6h name=system-res-timer on-event="/system script run email-res-worker" policy=read,write,policy,test start-time=00:05:00
add comment="sysconf: system auto upgrade" interval=1d name=system-upgrade-timer on-event="/system script run sys-upgrade-worker" policy=reboot,read,write,policy,password start-time=02:55:00
add comment="sysconf: system certs update" interval=15d name=certs-update-timer on-event="/system script run certs-update-worker" policy=reboot,read,write,policy,password start-time=03:30:00
add comment="pppoeconf: disable pppoe-out1" interval=3d name=disable-pppoe-timer on-event="/interface disable pppoe-out1" policy=write start-time=04:00:00
add comment="pppoeconf: enable pppoe-out1" interval=3d name=enable-pppoe-timer on-event="/interface enable pppoe-out1" policy=write start-time=04:00:10
/system script
add comment="sysconf: system log email" dont-require-permissions=no name=email-log-worker policy=read,write,policy,test source=""
add comment="sysconf: system resource email" dont-require-permissions=no name=email-res-worker policy=read,write,policy,test source=""
add comment="sysconf: system auto upgrade" dont-require-permissions=no name=sys-upgrade-worker policy=reboot,read,write,policy,password source=""
add comment="sysconf: system certs update" dont-require-permissions=no name=certs-update-worker policy=reboot,read,write,policy,password source=""
其中 interval
参数为定时器执行周期,start-time
参数为每天的触发时刻,各脚本时间设置汇总如下。
名称 | 开始时间 | 执行周期 | 说明 |
---|---|---|---|
system-log-timer | 00:00:00 | 45m | 每 45分钟 执行一次系统日志触发器 |
system-res-timer | 00:05:00 | 6h | 每 6小时 执行一次系统资源触发器 |
system-upgrade-timer | 02:55:00 | 1d | 每 1天 执行一次系统更新触发器 |
certs-update-timer | 03:30:00 | 15d | 每 15天 执行一次证书更新触发器 |
disable-pppoe-timer | 04:00:00 | 3d | 每 3天 执行一次断连 PPPoE |
enable-pppoe-timer | 04:00:10 | 3d | 每 3天 执行一次重连 PPPoE |
命令执行完毕后,打开 Winbox ,点击左侧导航 System
菜单的子菜单 Scheduler
,可以看到已有 6 个定时器。
如果需要禁用某个定时器,使用鼠标 单击 选中定时器,点击 ×
按钮,即可禁用该定时器。
点击 Winbox 左侧导航 System
菜单的子菜单 Scripts
,可以看到已有 4 个脚本。
但脚本条目均为红色,因为之前的命令只设置了脚本的基本参数,还未添加脚本代码。
根据所使用的 RouterOS 的类型,从以下两个系统自动更新脚本中选择合适的版本,并复制其代码:
鼠标 双击 系统自动更新脚本 sys-upgrade-worker
,进入脚本配置界面,在 Source
处粘贴脚本代码。
脚本输入完成后,sys-upgrade-worker
脚本将转变为正常状态。
若使用了 RouterOS 的 DoH 或 Adlist 功能,则需自动化更新根证书以避免相关功能证书验证失败。
与设置系统自动更新脚本类似,需复制 ros_certs_update_worker.conf 中的脚本代码。
鼠标 双击 证书自动更新脚本 certs-update-worker
,进入脚本配置界面,在 Source
处粘贴脚本代码。
RouterOS 支持使用 SMTP
协议进行邮件发送,推荐使用国内的QQ邮箱或163邮箱。
需要说明的是,这里使用邮箱主要在发送 系统日志信息 和 系统资源信息 ,如果无需邮件发送功能,可以跳过本段内容。
本文以163邮箱作为演示,登录163邮箱后,点击顶部 设置
菜单的子菜单 POP3/SMTP/IMAP
。
点击 POP3/SMTP服务
右侧的 开启
。
根据提示信息进行安全认证之后,就能拿到一个第三方客户端的 授权密码 ,该密码只出现一次,因此需要将密码复制出来并保存。
使用设备
处填写一个备注,以便后续区分。
然后找到 SMTP
服务器地址 smtp.163.com
,并记录下 SSL
端口号 465
。
回到 Winbox,点击左侧导航 Tools
菜单的子菜单 Email
,对邮件服务进行设置。
参数 | 值 | 说明 |
---|---|---|
Server | smtp.xxx.com |
SMTP 服务器地址,例如 smtp.163.com |
Port | 465 |
SMTP服务端口 |
TLS | yes |
使用 SSL |
From | [email protected] |
发件箱地址,例如 [email protected] |
User | [email protected] |
账户,与 From 相同,例如 [email protected] |
Password | ************ | 邮箱的授权密码 |
参考表格中的内容,From
和 User
均为刚开启了 SMTP
服务的邮箱地址,Password
为刚获取的授权密码,设置完成后点击 OK
。
复制 ros_email_log_worker.conf 中的脚本代码,并使用文本编辑器工具对脚本中有关 邮箱部分 参数进行修改。
## Resolve Mail Server
:local MailServer "<smtp.xxx.com>"; # Need to customize
:local MailPort "465";
:local MailTls "yes";
:local SendFrom "<[email protected]>"; # Need to customize
:local SendTo "<[email protected]>"; # Need to customize
:local MailIp;
:set MailIp [:resolve $MailServer ];
:delay 1s;
## Resolve End
注意:
Windows 环境下的一些文本编辑工具会在编辑文本时增加额外“空格”,并修改“换行符”。
推荐使用 Notepad3 、Visual Studio Code 这类代码编辑器。
点击 Winbox 左侧导航 System
菜单的子菜单 Scripts
,鼠标 双击 系统日志邮件脚本 email-log-worker
。
进入脚本配置界面后,在 Source
处粘贴脚本代码。
同样,根据所使用的 RouterOS 的类型,从以下两个系统资源邮件脚本中选择合适的版本,并复制其代码:
与 系统日志邮件脚本 一样,需要修改 邮箱部分 参数。
若实际网络环境中没有使用 PPPoE 拨号,则需要额外修改有关 外网接口部分 参数。
## Fox RouterOS Notification
:local Project "Resource Report";
:local WanInterface "pppoe-out1"; # Need to customize
:local UpdateChannel "stable";
鼠标 双击 系统资源邮件脚本 email-res-worker
,进入脚本配置界面,在 Source
处粘贴脚本代码。
设置完成后,如果之前禁用了两个系统邮件脚本的定时器,现在可以重新将其启用。
点击 Winbox 左侧导航 System
菜单的子菜单 Scheduler
,使用鼠标 单击 选中定时器,点击 ✓
按钮进行启用。
至此 RouterOS 设置定时任务步骤完成,系统会定时自动升级,并将系统的日志、资源信息发送给指定的邮箱。
结合 PVE 的周期性重启及备份策略,保证了路由器系统的健康运行。