找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4222|回复: 8

[脚本] 在线IP连接数的脚本

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

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

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

×
由于动态限速,所以常要得知在线的IP连接数。在坛子中看了看高手写的三个“IP连接数”有关脚本,在自己的机器中不支持,所以自己也编了一个,现将这些贴出为,希望给大家提供一个方便,由于自己是第一次发贴,有不对的地方也请各位指出来。

公共部分
:loc m
:set m 0
1.paldos发的
/ip fir fil add chain=forward src-address=10.195.194.0/24 ction=add-src-to-address-list address-list=pcq_list address-list-timeout=5s comment="cq_list_add"
:set m [:len [/ip firewall address-list find list=pcq_list]]
2.7500015发的
/ip fir fil add chain=forward scr-address=10.0.0.0/24 in-interface=lan action=add-src address-list=连线IP timeout=00:01:00
:foreach s in=[/ip fir address-list find list=连线IP] do={:set m ($m+1)}
3.7500015发的另一个
:foreach s in=[/ip arp find interface=NeiWang] do={:set m ($m+1)}
4.自己写的
:for s from 3 to 30 step 1 do={:if([/ip fir con find src-address=(10.0.0. . $s)]!="") do={:set m ($m+1)}}
说明:自己写在2.8.22上测试通过,坛子中收集的3个在2.8.22上无法运用,可能是版本不支持吧。
现在已知的问题是:自己写的这个脚本感觉运行效率低,不知有没有哪位大侠指点一下。

[ 本帖最后由 fanxk 于 2008-5-14 09:23 编辑 ]
routeros
发表于 2008-5-14 09:52:40 | 显示全部楼层
你到处发这个帖子有什么意义,要得到必行有付出,又要马儿不吃草,又要马儿跑的快,世界上哪有这么好的事情

论编程,我能写出很复杂的脚本,但是99%的情况下没那个必要,毕竟路由器稳定、高效才是王道
routeros
回复

使用道具 举报

发表于 2008-5-14 10:41:36 | 显示全部楼层
不是非常必要,最好不要用脚本,系统运行脚本是需要占用CPU资源的
routeros
回复

使用道具 举报

 楼主| 发表于 2008-5-14 11:02:13 | 显示全部楼层
楼上说得对,运行脚本确实占CPU,上述脚本我用就占100%,不过我的机器也够老的了,CPU是IDT-180的,平时满负荷也只用20%以内。我带了8台机器,每个IP都做的固定限速和限线程,效果比较好,也稳定,就是觉得有点浪费带宽。以前用了网上的超限的动态限速度,效果不好,所以想起了用这种方法,可实验了N久,都没有成功,所以只好自己学编了,由于ROS的脚本命令熟悉,可能走了些弯路,故请高人指点
routeros
回复

使用道具 举报

发表于 2008-5-14 13:27:02 | 显示全部楼层
:local MaxBandwidthDown 4000000
:local MaxBandwidthUp 1000000

:local LimitCount [:len [/ip firewall address-list find list=Limit-Count dynamic=yes]]
:log info ("On Line IP Count is " . $LimitCount)

:if ([:typeof $OldLimitCount] = nil ) do={
:global OldLimitCount 0
}

:if ($OldLimitCount != $LimitCount) do={
:set OldLimitCount $LimitCount

:local LimitDown ($MaxBandwidthDown/$LimitCount)
:local LimitUp ($MaxBandwidthUp/$LimitCount)

:if ($LimitCount!=0) do={
:if ($LimitDown <= 256000) do={
:if ([/queue type get Dynamic_Down pcq-rate] != 256000) do={
/queue type set Dynamic_Down pcq-rate=256000
/queue type set Dynamic_Up pcq-rate=128000
}
} else={
/queue type set Dynamic_Down pcq-rate=$LimitDown
/queue type set Dynamic_Up pcq-rate=$LimitUp
}
}
}
routeros
回复

使用道具 举报

 楼主| 发表于 2008-5-16 09:34:15 | 显示全部楼层
我用的2.8.22,不支持楼上的脚本
routeros
回复

使用道具 举报

发表于 2008-5-17 09:55:03 | 显示全部楼层
原帖由 lhn1324 于 2008-5-14 13:27 发表
:local MaxBandwidthDown 4000000
:local MaxBandwidthUp 1000000

:local LimitCount [:len [/ip firewall address-list find list=Limit-Count dynamic=yes]]
:log info ("On Line IP Count is " . $LimitCoun ...



什么版本适合得啊??
routeros
回复

使用道具 举报

 楼主| 发表于 2008-5-19 17:55:36 | 显示全部楼层
楼上的,应该2.9的以上的版本吧
routeros
回复

使用道具 举报

发表于 2008-5-20 01:02:11 | 显示全部楼层
我之前做的思路是按照出口的流量,对内网IP动态限速,
以6M最大带宽为例,小于4M时没个IP 1。5M,大于4M时每个IP 1M,大于5M时每个IP0。5M,大于5。5M时每个IP 0。25M, 当总流量小于1M时恢复每个IP 1。5M
在一个校园网里面使用了半年感觉还算比较理想,不过这里是ADSL,主要还是对上行的做限制,
routeros
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 15:12 , Processed in 0.085177 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2023 Discuz! Team.

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