Skip to content

Latest commit

 

History

History
246 lines (149 loc) · 11.4 KB

07.设置定时任务.md

File metadata and controls

246 lines (149 loc) · 11.4 KB

0.前期准备

在上一篇文章 06.设置流量整形 中,已经设置了 QoS ,现在开始设置系统定时任务。

注意:
如果后续将根据文章 09.设置系统参数 创建额外的系统管理员账户,建议优先执行账户相关设置。
由于涉及运行权限,因此在创建定时器和脚本时,请使用具有管理权限的系统账户。

RouterOS 提供了强大的脚本能力,搭配系统的定时器功能,可以实现一些高级自动化操作。

在正式开始之前需要做一些准备工作:

1.定时器和脚本初始化

定时器和脚本配置较为复杂,因此推荐使用 RouterOS 自带的终端工具 Terminal 进行配置。

如果使用第三方终端工具登录 RouterOS ,ssh 命令演示如下。

## 使用管理员账户 admin 进行 SSH 登录
$ ssh [email protected]

## 修改了 SSH 服务端口时的 SSH 登录
## 演示端口号为 5022
$ ssh [email protected] -p 5022

RouterOS 的定时器将会创建 6 个,分别为:

  1. 定时触发系统日志邮件脚本

  2. 定时触发系统资源邮件脚本

  3. 定时触发系统自动更新脚本

  4. 定时触发证书自动更新脚本

  5. 定时断开 PPPoE 连接

  6. 定时重连 PPPoE 连接

RouterOS 的脚本将会创建 4 个,分别为:

  1. 系统日志邮件脚本

  2. 系统资源邮件脚本

  3. 系统自动更新脚本

  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 个定时器。

定时器

如果需要禁用某个定时器,使用鼠标 单击 选中定时器,点击 × 按钮,即可禁用该定时器。

停用某定时器

2.完善系统更新脚本

点击 Winbox 左侧导航 System 菜单的子菜单 Scripts ,可以看到已有 4 个脚本。

脚本待完善

但脚本条目均为红色,因为之前的命令只设置了脚本的基本参数,还未添加脚本代码。

根据所使用的 RouterOS 的类型,从以下两个系统自动更新脚本中选择合适的版本,并复制其代码:

鼠标 双击 系统自动更新脚本 sys-upgrade-worker ,进入脚本配置界面,在 Source 处粘贴脚本代码。

粘贴自动更新脚本

脚本输入完成后,sys-upgrade-worker 脚本将转变为正常状态。

自动更新脚本完成

3.完善证书更新脚本

若使用了 RouterOS 的 DoH 或 Adlist 功能,则需自动化更新根证书以避免相关功能证书验证失败。

与设置系统自动更新脚本类似,需复制 ros_certs_update_worker.conf 中的脚本代码。

鼠标 双击 证书自动更新脚本 certs-update-worker ,进入脚本配置界面,在 Source 处粘贴脚本代码。

粘贴自动更新脚本

4.系统邮件通知

4.1.准备发信邮箱

RouterOS 支持使用 SMTP 协议进行邮件发送,推荐使用国内的QQ邮箱或163邮箱。

需要说明的是,这里使用邮箱主要在发送 系统日志信息系统资源信息 ,如果无需邮件发送功能,可以跳过本段内容。

本文以163邮箱作为演示,登录163邮箱后,点击顶部 设置 菜单的子菜单 POP3/SMTP/IMAP

163邮箱smtp设置

点击 POP3/SMTP服务 右侧的 开启

163邮箱开启smtp

根据提示信息进行安全认证之后,就能拿到一个第三方客户端的 授权密码 ,该密码只出现一次,因此需要将密码复制出来并保存。

使用设备 处填写一个备注,以便后续区分。

163邮箱smtp授权密码

然后找到 SMTP 服务器地址 smtp.163.com ,并记录下 SSL 端口号 465

163邮箱协议与端口

4.2.设置 RouterOS 邮件服务

回到 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 ************ 邮箱的授权密码

参考表格中的内容,FromUser 均为刚开启了 SMTP 服务的邮箱地址,Password 为刚获取的授权密码,设置完成后点击 OK

邮件服务设置

4.3.完善系统日志邮件脚本

复制 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 环境下的一些文本编辑工具会在编辑文本时增加额外“空格”,并修改“换行符”。
推荐使用 Notepad3Visual Studio Code 这类代码编辑器。

点击 Winbox 左侧导航 System 菜单的子菜单 Scripts ,鼠标 双击 系统日志邮件脚本 email-log-worker

进入脚本配置界面后,在 Source 处粘贴脚本代码。

系统日志邮件脚本

4.4.完善系统资源邮件脚本

同样,根据所使用的 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 的周期性重启及备份策略,保证了路由器系统的健康运行。