找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4765|回复: 6

[pppoe] pppoe用户限制时间上网的脚本

[复制链接]
发表于 2008-5-20 23:23:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
今晚闲来无事,就顺便写一段脚本来实现前几天的一为坛友对 "pppoe用户限制时间上网"的要求

1,在system-->Scheduler里面建一规则,一分钟执行一次,如图
2,脚本如下
###############################################
#功能:指定拨号用户上网时间 只能指定一个时间段#
#用户列表,一用户写一行,可以用空格对齐,格式:用户帐号-起始时间-终止时间,\ 例如 test-hh:mm:ss-hh:mm:ss,\
:set STR "\
  test    -  8:30:00 - 12:30:00,\
  abc     -  9:00:00 - 22:30:00,\
"
###############################################
#当前时间
:set T [:totime [/sys clock get time]]
#逐行处理帐号参数
:foreach i in=$STR do={
# 除去参数中的空格
  :while([:set j [:find $i " "]]>=0 || $j>=0) do={:set i ([:pick $i 0 $j] . [:pick $i ($j+1) [:len $i]])}
# 把参数分解成集合
  :while([:set j [:find $i "-"]]>=0 || $j>=0) do={:set i ([:pick $i 0 $j] . "," . [:pick $i ($j+1) [:len $i]])}
# 分解取得各项参数
  :set k 0; :set ZH ""; :set T1 00:00:00; :set T2 23:59:59
  :foreach j in=$i do={
    :set k ($k + 1)
    :if($k=1) do={:set ZH $j}
    :if($k=2) do={:set T1 [:totime $j]}
    :if($k=3) do={:set T2 [:totime $j]}
    }
# 判断参数的正确性
  :set ok "yes"
  :if($T1=[:nothing] || $T2=[:nothing]) do={:log error ($i . "时间表达错误"); :set ok "no"}
  :set id ""; :set id [/ppp secret find name=$ZH]
  :if($id="") do={:log error ("帐号" . $ZH . "不存在"); :set ok "no"}
# 参数正确的话继续
  :if($ok="yes") do={
#   当前帐号的状态
    :set stat [/ppp secret get $id disabled]
#   如果在开放时间段,没有打开的帐号,则打开该帐号
    :if($T>=$T1 && $T<=$T2 && $stat=true)  do={/ppp secret enable  $id}
#   如果不在开放时间段,打开了的帐号,则关闭该帐号
    :if(($T<$T1 || $T>$T2) && $stat=false) do={/ppp secret disable $id}
    }
  }
测试达到预期要求

在用户列表部分增加减少修改需要控制的帐号和时间就可以了,每个用户可以设置不同的时间段,但只能设置一个时间段,若须多个时间段的,则代码复杂很多,一分钟执行一次,效率不是很高,但设置简单具有一般性,如果时间段全部都是一样或者只有很少的几种时间段的话,可以为每个时间段设置一个调度,效率就高些。如果用户很多的话,比如成百上千,效率上这个方法基本就不太可行了,也许该用radius
pppoe.JPG
routeros
发表于 2008-5-20 23:46:56 | 显示全部楼层
顶一下
routeros
回复

使用道具 举报

发表于 2008-5-21 11:26:40 | 显示全部楼层
顶一下!改天测试看看
routeros
回复

使用道具 举报

发表于 2008-5-21 12:51:20 | 显示全部楼层
谢谢楼主分享!
routeros
回复

使用道具 举报

发表于 2008-6-19 14:54:21 | 显示全部楼层
存在漏洞:如果在上网时间拨号了的用户只要没有断开PPPOE连接,时间到了也一样的上网~!
虽然不是很完美,但我还是非常感谢LZ!!
routeros
回复

使用道具 举报

发表于 2008-6-21 09:46:21 | 显示全部楼层
顶起,好东东,学习咯,感谢楼主分享了!!!!
routeros
回复

使用道具 举报

发表于 2010-7-30 10:35:09 | 显示全部楼层
这么好的东西不顶都难。
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-5-20 02:52 , Processed in 0.133452 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表