|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 mxso 于 2010-1-24 16:07 编辑
以下脚本适用于已建立的PPP服务
脚本将应用PPP用户注释,不影响注释正常使用
添加“[日期8位数]”字段即参与比较,不添加“[日期8位数]”将不作比较
如只需6位日期须修改script部分代码第4行[:pick $Date 7 11]将7改为9,第7行([:len $temp ]>=10)将10改为8.即为6位日期“[100308]”10年3月8日
当获取到用户注释的日期小于系统日期将作页面通知并禁止访问其他网络.
当获取到用户注释的日期大于系统日期将当前用户设置回为正常上网//此功能尽管作用不大,如:到期用户续费,设置日期后,在下一次调用脚本时对当前续费用户开通上网.取决于调用脚本的间距时间
注释格式 “…[日期8位数]…”年月日
如“张三[20100308]到期”到2010年3月8日将对当前注释的用户操作
如“…[ega322sf]…” 不是数值将不作比较,脚本不对当前注释用户进行操作
如 “邻居李四”或空注释,将不作比较,脚本不对当前注释用户进行操作
思路:
到期用户拨号获取到的IP禁止访问其他网络,其网页请求转换到指定的ip,作为到期通知
以下代码不能照搬 X.X.X.1-X.X.X.254为禁止访问和页面跳转的IP段,请自己修改,X.X.X.X为到期通知的Web服务器IP端口80,PPP_Server 更改为你的本地IP或地址池
添加1个到期的IP地址池(Pool)expire_pool X.X.X.1-X.X.X.254 //到期的用户将分派这个地址段IP- /ip pool add name=expire_pool ranges=X.X.X.1-X.X.X.254
复制代码 添加1个防火墙规则(Filter Rules)drop X.X.X.1-X.X.X.254 //禁止这个地址段的IP- /ip firewall filter add action=drop chain=forward comment="禁止到期用户IP" disabled=no src-address=X.X.X.1-X.X.X.254
复制代码 添加1个NAT转换规则(NAT)dstnat X.X.X.1-X.X.X.254 //将这个地址段IP的Tcp 80(即web默认端口)请求跳到指定的IP地址,作为到期通知- /ip firewall nat add action=dst-nat chain=dstnat comment="到期通知跳转" disabled=no dst-port=80 protocol=tcp src-address=X.X.X.1-X.X.X.254 to-addresses=X.X.X.X to-ports=80
复制代码 注意: X.X.X.X为到期通知的Web服务器IP端口80
添加1个为到期PPP规则(PPP Profiles)expire RemoteAddress=expire_pool //建立expire Profiles 将用户地址池(即Remote Address)指向刚建立的expire_pool地址池- /ppp profile add change-tcp-mss=default comment="到期规则" local-address=PPP_Server name=expire-profiles remote-address=expire_pool
复制代码 注意 PPP_Server 更改为你的PPP服务IP或地址池!
补充:
设置时区和网络自动校时- /system clock manual set time-zone=+08:00
- /system ntp client set enabled=yes mode=unicast primary-ntp=129.6.15.28 secondary-ntp=129.6.15.29
复制代码 下面代码保存到script,用scheduler设置每天至少调用一次- :local Date [/system clock get date]
- :local Month ([:find jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec [:pick $Date 0 3]]+1)
- :if ($Month<10) do={:set Month (0 . $Month)}
- :set Date ([:pick $Date 7 11] . $Month . [:pick $Date 4 6])
- :foreach i in=[/ppp secret find comment!=""] do={
- :local temp [/ppp secret get $i comment]
- :if ([:len $temp ]>=10) do={
- :if ([:tonum [:pick $temp ([:find $temp "["]+1) [:find $temp "]"]]] < $Date) do={
- :if ([/ppp secret get $i profile]!="expire-profiles") do={/ppp active remove [/ppp active find name=[/ppp secret get $i name]]}
- /ppp secret set $i profile=expire-profiles} else={
- :if ([/ppp secret get $i profile]="expire-profiles") do={/ppp active remove [/ppp active find name=[/ppp secret get $i name]]}
- /ppp secret set $i profile=default}}}
复制代码 |
|