ROS PPPOE到期提醒停用脚本

更新时间:2023-07-24 04:08:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

ROS PPPOE用户帐号到期提前提醒,过期帐号禁用及强制下线脚本.

#ROS PPPOE用户帐号到期提前提醒,过期帐号禁用及强制下线脚本
#用户帐户的备注里必须包含格式:[yyyymmdd] 如:有效期至[yyyymmdd]
#其中 yyyymmdd 为到期年月日

#before 为到期提前提醒的天数
:local before 2

#获取当前系统日期信息
:local curdate [/system clock get date]

#将当前系统日期信息转换为年月日 yyyymmdd 的格式
:local yy ([:find jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec [:pick $curdate 0 3]]+1)
:if ($yy<10) do={:set yy (0 . $yy)}
:set curdate ([:pick $curdate 7 11] . $yy . [:pick $curdate 4 6])

#expdate 为账户有效期变量
:local expdate ""

#cnt 为有效用户数变量
:local cnt "0"

/ppp secret
:foreach puse in [find disabled=no] do={
:local pcom [get $puse comment]
:set expdate [:pick $pcom ([:find $pcom "["]+1) ([:find $pcom "]"])]
:local pnam [get $puse name]
:set cnt ($cnt + 1)
:if ($pcom != "" && $pcom != "admin") do={
:if ([:len $pcom]<10) do={
:log error ("账号【".$pnam."】的有效期备注格式有误,现备注:" . $pcom );:beep frequency=2080;
} else={
:if ($expdate>1) do={
:if ($expdate >= $curdate && ($expdate - $curdate) <= $before) do={
:log error ("用户【" . $pnam . "】即将到期,有效期至 $expdate")
}
}
:if ($expdate < $curdate) do={

#将过期的帐号连接强制下线
/ppp active remove [/ppp active find name=$pnam];

#将过期的帐号禁用,不允许拨号
/ppp secret disable [/ppp secret find name=$pnam];:set cnt ($cnt - 1)
:log error ("用户【" . $pnam . "】已过期,停用并强制下线!")
}
}
} else={
:log error ("用户【" . $pnam . "】的备注为空,请重新备注!");:beep frequency=2080;
}
}
:log warning ("有效用户数【" . $cnt . "】")

################################# 脚本到此为止 #########################################

首先在 /system script 下添加Script,命名为“PPPOE到期提醒”,然后将以上脚本拷贝粘贴
到Source下面。

其次在 /system scheduler 下添加Scheduler,命名随便,比如“PPPOE到期提醒”,然后
在On Event:下面填写Script名“PPPOE到期提醒”,注意填
写Script名时不要代双引号。
Start Time: 改为路由器负载比较轻的时刻比较好,比如02:00:00。
Interval:改为24:00:00,即每隔24小时(每天02:00:00)执行一次。

最后,将下面的 Policy 全部都勾上。

点击 OK,完毕。

本文来源:https://www.bwwdw.com/article/ddkm.html

Top