ubnt解决方案
查看: 12525|回复: 14

[资料分享] unifiap用shell脚本自动踢除信号差的mac

[复制链接]

641

回帖

2840

积分

1721 小时

在线时间

少校

注册时间
2010-1-31
金币
1969 个
威望
5 个
荣誉
1 个

尚未签到

发表于 2013-10-23 21:57 |显示全部楼层
本帖最后由 dato 于 2013-12-1 10:21 编辑

采购unifi ap时,当时主要是想这家公司在UBNT系列网桥那么好的用户反馈那么它的unifi ap系列应该也不差。实际安装测试时,又遇到了类似ddwrt下atheros蕊片的一些怪问题,个人真心排斥atheros蕊片。最近一直在浏览它的用户论坛,也是有大量用户反应ping延迟问题,隔几天需要重启才能让客户端接入之类的。

曾经被人问到,就发了个主题“无线存在水桶原理,信号最差的客户端决定所有人的连接质量”。但是没有人给出一个比较好的解释,当初发现这个问题其实是一个tplink 841n v3刷ddwrt时在某种临界状态时,会导致所有客户端类似断网的情况发生,只有ifconfig ath0 down;ifconfig ath0 up才能使无线恢复正常。有一次,公司因为无线接不进去,员工才不管这个接入点在哪里信号好不好,只管连接就是了。最后发现那台tplink 941上面挂了19个用户。而就坐在tplink 941旁的管理人员却很难登录WEB管理界面,那ping高延迟丢包情况根本不能看,显然这时候无线跟距离没关系了。看到很多无线网络性能优化文档提到踢除信号差的用户,显然这个水桶原理是存在的。

前段时间接到电话说网络慢的像蜗牛一样,这些年有看到3000ms的ping还没看到有上万的ping,能不慢吗。这台电脑跟unifi ap间的直线距离只有3米不到。
64 bytes from 192.168.10.27: seq=1180 ttl=64 time=11839.121 ms
64 bytes from 192.168.10.27: seq=1181 ttl=64 time=11330.665 ms
64 bytes from 192.168.10.27: seq=1182 ttl=64 time=10471.025 ms

那么有些什么情况将会成为那块最短的木板呢?
1,当一个用户从一个办公区域移动到另外一个办公区域时,结果发现AP根本没切换到靠近信号最强的那个,可能还连接到最初连接的那个AP,而此时由于距离改变,障碍物的影响,重叠区域的信号干扰都可能导致连接质量急剧下降。
2,设备进入节能模式。笔记本我看win8下会进入 中等节能 模式,手机之类的都有可能,监测到一部android手机它的RSSI值最低时才8
3,还是这些未认证的设备啊,由于mac过滤是在中心交换机上操作的,这些设备虽然拿不到IP,但是在AC管理界面依旧能看到这些设备连在无线网络上取得了169开头的微软内部保留地址。
4,还有别的吗,想不出来了。


当时看中unifi ap的一个特性,它具有自动踢除信号弱用户的功能,这个功能v3系列可以通过内置功能实现(没测试成功),v2可以通过第三方扩展unifi lab通过curl操作AC管理界面实现。所以在布署AP时就采用了同一个SSID,但是第一次带着win8自带的无线管理软件,走到4个接入点虽然连接的都是同样的一个SSID,可是其实输入了4次的同样的无线密码。显然这个跟所谓的无逢漫游实现不是一回事。跟v3 的Zero-ndoff实现也不一样。http://community.ubnt.com/t5/UniFi-Frequently-Asked-Questions/UniFi-What-is-Zero-Handoff/ta-p/412719

由于没有采用管理机进行在线管理,迫切的希望找到一种方法来自动踢除这些信号弱的用户导致的整体无线性能下降情况发生。
前几天搜索的时候发现可以在unifi ap里实现半自动化的cron实现。cron计划任务配合脚本将扩展很多管理任务。
crond for airos 5
http://community.ubnt.com/t5/airOS-Software-Configuration/crond-for-airos-5/td-p/350458
这个帖子里的内容,你需要用下面的命令再重新修复一下
------------------------------------------------------------------------
wget -O airos5-crond.tar http://webserver/airos5-crond.tar
tar xvf airos5-crond.tar
user=admin #设置你的AC设置的登录用户
chgrp -R $user /etc/persistent
chown -R $user /etc/persistent
ln -s /etc/persistent/etc/crontabs/ubnt /etc/persistent/etc/crontabs/$user
echo "echo UTC-8>/etc/TZ">>/etc/persistent/rc.prestart
echo "/usr/bin/crond &">>/etc/persistent/rc.prestart
/etc/persistent/rc.prestart

save
------------------------------------------------------------------------
开心前几天把/bin目录试了个遍,终于发现有个mca-dump命令,它输出if_table(本机eth0 mac地址),radio_table,scan_table(周边AP mac),vap_table(本机athx mac地址),sta_table(接入客户端mac)
造了个脚本
第一段,用mca-dump获得所有mac地址,iwlist ath0 ap获得周边 AP mac地址,ifconfig获得本机mac地址
第二段,把在wmac.tmp文本里的mac地址从mac.lst里面剔除掉剩下的就是接入客户端的mac了。
第三段,将获得的rssi值进行判断处理,如果低于20,则进行iwpriv $ath addmac mac(将mac加入黑名单);iwpriv $ath kickmac mac(踢除该用户);sleep 30(延迟30秒让客户端再重新搜索信号好的AP进行连接; iwpriv $ath maccmd 3(清空黑名单);
RSSI value = Signal Strength (dBm) - Noise Floor (dBm).
"rssi": 48,
"noise":        -86,
"signal":       -38,

添加cron任务在每天的办公时间9-18点之间每10分钟运行一次踢除操作。
/etc/persistent/etc/crontabs/ubnt
*/10 9-17 * * * /etc/persistent/kick_dato.sh

#!/bin/sh
#etc/persistent/kick_dato.sh
cd /bin;mca-dump | grep -Eo ..\(\:..\){5} >/tmp/mac.lst
iwlist ath0 ap | grep -Eo ..\(\:..\){5} | tr A-Z a-z >/tmp/wmac.tmp
ifconfig | grep -Eo ..\(\:..\){5} | tr A-Z a-z >>/tmp/wmac.tmp

xcl=/tmp/wmac.tmp
_f=/tmp/mac.lst
if [ -e $xcl ] ; then
        while read kmac ; do
                sed -i -e "/${kmac}/d" $_f
        done < $xcl;fi

for i in $(cat /tmp/mac.lst); do rssi=`mca-sta $i | sed -n "/rssi/p" |grep -o "[0-9]\+"`
if [ $rssi -lt 20 ] ;then #设置rssi小于多少则条件成立
b=`mca-sta $i | sed -n "/mac/p" |grep -Eo ..\(\:..\){5}`

for ath in `ls /proc/sys/net | grep ath` ; do iwpriv $ath addmac "$b";iwpriv $ath kickmac "$b";done
echo "`(date +"%m/%d/%Y %T")` kickmac_$b rssi_$rssi" >> /etc/persistent/log;fi;done
sleep 30;for ath in `ls /proc/sys/net | grep ath` ; do iwpriv $ath maccmd 3;done
日志输出------------------------------------------------------------------------
r1 这台AP今天又无缘无故重启了,这日志跟其它AP配不上对。
BZ.v2.4.6# uptime
19:50:41 up  5:00, load average: 0.00, 0.00, 0.00
BZ.v2.4.6# cat log
10/23/2013 17:40:02 kickmac_ec:35:86:07:XX:XX rssi_11 #看到踢到不同的AP上了,奇怪了怎么同一时间连接到2台AP上
BZ.v2.4.6# date
Wed Oct 23 19:51:41 UTF 2013


r2
BZ.v2.4.6# uptime
19:52:12 up 19:10, load average: 0.00, 0.07, 0.16
BZ.v2.4.6# cat log
10/22/2013 10:30:02 kickmac_98:fe:94:XX:XX:XX rssi_28
10/22/2013 10:40:03 kickmac_98:fe:94:XX:XX:XX rssi_27
10/22/2013 11:50:04 kickmac_98:d6:f7:XX:XX:XX rssi_8   #这部android手机信号最差时
10/22/2013 12:00:03 kickmac_f4:f1:5a:XX:XX:XX rssi_19
10/23/2013 09:00:02 kickmac_f4:f1:5a:XX:XX:XX rssi_11
10/23/2013 10:00:04 kickmac_98:d6:f7:XX:XX:XX rssi_18
10/23/2013 10:30:04 kickmac_78:92:9c:XX:XX:XX rssi_16
10/23/2013 11:00:05 kickmac_78:92:9c:XX:XX:XX rssi_18
10/23/2013 11:10:05 kickmac_78:92:9c:XX:XX:XX rssi_14
10/23/2013 11:40:03 kickmac_98:d6:f7:XX:XX:XX rssi_10
10/23/2013 13:30:02 kickmac_00:26:c7:XX:XX:XX rssi_16  #看起来这个用户依然没成功把它踢到其它AP上,是sleep 30不够还是它未连接过其它同SSID AP
10/23/2013 13:40:03 kickmac_00:26:c7:XX:XX:XX rssi_14
10/23/2013 13:50:02 kickmac_00:26:c7:XX:XX:XX rssi_13
10/23/2013 14:00:02 kickmac_00:26:c7:XX:XX:XX rssi_14
BZ.v2.4.6# date
Wed Oct 23 19:52:25 UTF 2013

l2
BZ.v2.4.6# uptime
19:54:27 up 19:44, load average: 0.06, 0.01, 0.00
BZ.v2.4.6# cat log
10/23/2013 10:20:02 kickmac_8c:00:6d:XX:XX:XX rssi_9
10/23/2013 14:10:02 kickmac_ec:35:86:07:XX:XX rssi_14
10/23/2013 15:40:02 kickmac_74:ea:3a:XX:XX:XXrssi_6    #HOHO在一侧走廊前部的台式电脑竟然连到另外一侧走廊中部的AP上。。。
10/23/2013 17:40:02 kickmac_ec:35:86:07:XX:XX rssi_9   #看到踢到不同的AP上了,奇怪了怎么同一时间连接到2台AP上
BZ.v2.4.6# date
Wed Oct 23 19:54:32 UTF 2013
--------------------------------------
上面都不用看直接跳到这里,将unifi.tar放到你自己的web服务器上。每次在unifi ap启动时 执行 /etc/persistent/rc.prestart就可以,将rc.prestart改名为profile似乎也行,只不过仍然需要一次终端登录过程,算了保险点还是手动执行/etc/persistent./rc.prestart吧

cd /etc/persistent
wget -O unifi.tar http://webserver/unifi.tar
tar xvf unifi.tar -C /
user=admin
#chgrp -R $user /etc/persistent
#chown -R $user /etc/persistent
ln -s /etc/persistent/etc/crontabs/ubnt /etc/persistent/etc/crontabs/$user
chmod +x *.*
save
/etc/persistent/rc.prestart

file.txt
rc_dato.sh      重启unifi 服务,有待观察是否效果等同于reboot,是否有用。
rc.prestart.sh 修改过的启动文件增加了同步北京时间和启动crond进程
rb_dato.sh      发生过几次ping不到AP的情况而且是同一台,希望它能自己重启吧
注意修改网关IP,并修改下列文件
/etc/persistent/etc/crontabs/ubnt
*/10 9-17 * * * /etc/persistent/rb_dato.sh
kick_dato.sh    踢除RSSI值<20的用户
cplog_dato.sh 备份日志以备分析如果需要,需要修改cron任务

生成tar压缩包方法
cd /
tar -cf /etc/persistent/unifi.tar etc/persistent/file.txt etc/persistent/cplog_dato.sh etc/persistent/rc.prestart etc/persistent/rc_dato.sh etc/persistent/rb_dato.sh etc/persistent/kick_dato.sh etc/persistent/cplog_dato.sh etc/persistent/etc

附件在这里



* 2013年12月1日星期日
- 可运行在 Tomato 上的免输密码登录 SSH 程序 SSHPASShttp://www.right.com.cn/forum/thread-133334-1-1.html
(出处: 恩山WIFI论坛)
通过/etc/rc.d/rc restart 操作,目前手头的最长的已经运行uptime 11天时间了,当然有时候是因为公司停电,有时候可能因为看门狗的问题。因为没有tomato下ssh 登录方法,上面的链接SZPUNK提供了一个静态版本可以运行在shibby tomato 115版本,哈这下可以重运行rc.prestart 脚本了  sshpass -p only2w ssh admin@r1 rc.prestart

* 2013年10月13日星期日
- 生成文档
- 怎么感觉写的东西很凌乱




本帖子中包含更多资源

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

x

评分

1

查看全部评分

本帖被以下淘专辑推荐:

12

回帖

103

积分

40 小时

在线时间

上等兵

注册时间
2009-2-20
金币
87 个
威望
0 个
荣誉
0 个

尚未签到

发表于 2014-9-21 09:59 |显示全部楼层
前来学习,不知道Openwrt上怎么样读取RSSI和踢出Mac地址?
回复

使用道具 举报

734

回帖

2723

积分

945 小时

在线时间

少校

注册时间
2009-4-8
金币
1843 个
威望
4 个
荣誉
0 个

尚未签到

发表于 2013-10-23 22:47 |显示全部楼层
要是能有脚本在DD-WRT上实现类似的功能就好
回复

使用道具 举报

641

回帖

2840

积分

1721 小时

在线时间

少校

注册时间
2010-1-31
金币
1969 个
威望
5 个
荣誉
1 个

尚未签到

发表于 2013-10-23 23:03 来自手机 |显示全部楼层
gw1357 发表于 2013-10-23 22:47
要是能有脚本在DD-WRT上实现类似的功能就好

有的啊点我名字啊,那个水桶原理的帖子应该有段解决tp841 ddwrt的方法,汗手机浏览器看不到,明天上电脑看看。
回复

使用道具 举报

9

回帖

30

积分

0 小时

在线时间

新兵上阵

注册时间
2013-10-25
金币
21 个
威望
0 个
荣誉
0 个

尚未签到

发表于 2013-10-25 09:41 |显示全部楼层
要是能有脚本在DD-WRT上实现类似的功能就好
.bet365网站地址器bbcwin130.com
bet365滚球注册bbcwin131.com
bet365娱乐场bbcwin132.com


回复

使用道具 举报

659

回帖

2053

积分

672 小时

在线时间

少校

注册时间
2011-10-19
金币
1300 个
威望
1 个
荣誉
1 个
累计签到:1 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2013-10-25 10:59 |显示全部楼层
很需要这个功能,但是一直都没能实现,找了很多文档,但是,确实看不懂,v3.1.4的控制器版本有这个限制信号低的客户端连接的功能,我测试了几天,发现unifi ap限制RSSI这个功能是这样的:当ap检测到某客户端信号持续低于设定值60秒后,就会重新连接这个客户端。而不是直接禁止这个客户端连接。这样一来,低信号的客户端就会每隔60秒就重新连接一次ap。(我认为官方的设计思路是这样: 当某客户端信号低时,会让这个客户端重新连接分配到另外一个信号较好的ap去,这对于有多个ap作覆盖的来说很有用,但是对于只有一个ap的来说就没用,)
我的是ubnt unifi系列 ap,固件版本是3.1.4测试版,目前只有这个测试版本能实现RSSI限制。至于以后版本升级能不能更加完善这个功能,就不知道了。
话说,楼主的教程我看不懂,唉,
回复

使用道具 举报

641

回帖

2840

积分

1721 小时

在线时间

少校

注册时间
2010-1-31
金币
1969 个
威望
5 个
荣誉
1 个

尚未签到

发表于 2013-10-25 12:02 |显示全部楼层
本帖最后由 dato 于 2013-10-25 12:07 编辑

最近写文档是有点混乱。你的应用只有一个AP的话

--------------------------------------
上面都不用看直接跳到这里

就直接从这里看。首先一步是 ssh ubnt@unifiap ssh方式登录到每个AP里然后

cd /etc/persistent
定位到这个目录,这也是目前唯一一个可以保留用户配置文件的地方
wget -O unifi.tar http://webserver/unifi.tar
通过wget下载预配置的一些脚本到本地
tar xvf unifi.tar -C /
解压脚本到 / 根目录 下
user=admin
#chgrp -R $user /etc/persistent
#chown -R $user /etc/persistent
这个主要是原先从老外那帖子下的cron服务里因为它带有用户权限所以修复用的。我这个因为一直使用admin就不知道是否有这情况,因为linux还是有用户权限的,如果不行就将#去除
ln -s /etc/persistent/etc/crontabs/ubnt /etc/persistent/etc/crontabs/$user
这个修复crond 跟它加载文件的对应关系,似乎就是相应的登录时的那用户
chmod +x *.*
然后 给在/etc/persistent 目录下的可执行权限
save
将自定义文件保存到/etc/persistent 目录里,而且这个目录里的文件就算你用清空的那些命令依然存在,也许也是这个原因rc.prestart并不能重启自动运行。
/etc/persistent/rc.prestart
这个就是每次一旦ap重启以后就要调用的相应命令。偶附加了+8时区和直接运行crond &
这样crond任务就运行了。

关于你只有一个AP的情况,如果你能很确定用户是在某个具体的点,而且不移动的话,也就是他们的RSSI永远就一个数值。那就将最后一句用#注释掉,这样这些低RSSI的用户将永久性封禁。
  1. #!/bin/sh
  2. #etc/persistent/kick_dato.sh
  3. cd /bin;mca-dump | grep -Eo ..\(\:..\){5} >/tmp/mac.lst
  4. iwlist ath0 ap | grep -Eo ..\(\:..\){5} | tr A-Z a-z >/tmp/wmac.tmp
  5. ifconfig | grep -Eo ..\(\:..\){5} | tr A-Z a-z >>/tmp/wmac.tmp

  6. xcl=/tmp/wmac.tmp
  7. _f=/tmp/mac.lst
  8. if [ -e $xcl ] ; then
  9.         while read kmac ; do
  10.                 sed -i -e "/${kmac}/d" $_f
  11.         done < $xcl;fi

  12. for i in $(cat /tmp/mac.lst); do rssi=`mca-sta $i | sed -n "/rssi/p" |grep -o "[0-9]\+"`
  13. if [ $rssi -lt 20 ] ;then #设置rssi小于多少则条件成立
  14. b=`mca-sta $i | sed -n "/mac/p" |grep -Eo ..\(\:..\){5}`

  15. for ath in `ls /proc/sys/net | grep ath` ; do iwpriv $ath addmac "$b";iwpriv $ath kickmac "$b";done
  16. echo "`(date +"%m/%d/%Y %T")` kickmac_$b rssi_$rssi" >> /etc/persistent/log;fi;done
  17. #sleep 30;for ath in `ls /proc/sys/net | grep ath` ; do iwpriv $ath maccmd 3;done

复制代码
里面有个rb_dato.sh,这台不知道为什么老是会出现ping不到的情况,这个包里提供的是reboot方法,我改成/etc/rc.d/rc restart 看似有效果,这样的话,我就看看这unifi ap能uptime多久。

BZ.v2.4.6# cat rb_dato.sh
#!/bin/sh
if ! ping -c 1 192.168.10.253 >/dev/null;then
echo "`(date +"%m/%d/%Y %T")` reboot_ " >> /etc/persistent/log;
save;/etc/rc.d/rc restart
fiBZ.v2.4.6# cat log
10/25/2013 07:01:20 rc restart_
10/25/2013 09:10:02 kickmac_f4:f1:5a:e2:53:ee rssi_16
10/25/2013 09:20:02 kickmac_f4:f1:5a:e2:53:ee rssi_8
10/25/2013 11:25:11 reboot_

忘了ssh 文件管理的话,感觉winscp方便点直接可以以目录方式进行浏览
http://winscp.net/eng/download.php


回复

使用道具 举报

641

回帖

2840

积分

1721 小时

在线时间

少校

注册时间
2010-1-31
金币
1969 个
威望
5 个
荣誉
1 个

尚未签到

发表于 2014-2-19 11:51 |显示全部楼层
本帖最后由 dato 于 2014-3-21 10:21 编辑

* 2014年02月19日星期三

-有需要的朋友请重新下载这个附件,这是个更新版本   
-修正了kick_dato.sh 将rssi 低于15的用户写入/tmp/bmac.lst 临时文件进行处理,以避免原先直接用偷懒的方法使用iwpriv $ath maccmd 3导致使用AC管理软件进行block的设备无效又可以连接的问题
  1. #!/bin/sh
  2. #etc/persistent/kick_dato.sh
  3. cd /bin;mca-dump | grep -Eo ..\(\:..\){5} >/tmp/mac.lst
  4. iwlist ath0 ap | grep -Eo ..\(\:..\){5} | tr A-Z a-z >/tmp/wmac.tmp
  5. ifconfig | grep -Eo ..\(\:..\){5} | tr A-Z a-z >>/tmp/wmac.tmp

  6. xcl=/tmp/wmac.tmp
  7. _f=/tmp/mac.lst
  8. if [ -e $xcl ] ; then
  9.         while read kmac ; do
  10.                 sed -i -e "/${kmac}/d" $_f
  11.         done < $xcl;fi

  12. >/tmp/bmac.lst #

  13. for i in $(cat /tmp/mac.lst); do rssi=`mca-sta $i | sed -n "/rssi/p" |grep -o "[0-9]\+"`
  14. if [ $rssi -lt 15 ] ;then #设置rssi小于多少则条件成立

  15. echo $i>>/tmp/bmac.lst #

  16. for ath in `ls /proc/sys/net | grep ath` ; do iwpriv $ath addmac "$i";iwpriv $ath kickmac "$i";done
  17. echo "`(date +"%m/%d/%Y %T")` kickmac_$i rssi_$rssi" >> /etc/persistent/log;fi;done
  18. sleep 60 #;for ath in `ls /proc/sys/net | grep ath` ; do iwpriv $ath maccmd 3;done
  19. for ath in `ls /proc/sys/net | grep ath` ; do for i in $(cat /tmp/bmac.lst);do iwpriv $ath delmac $i;done;done
复制代码
-请修改rb_dato.sh 192.168.10.253 这个脚本的作用是ping前端交换机,如果不能ping通则软重启AP
if ! ping -c 1 192.168.10.253
  1. #!/bin/sh
  2. if ! ping -c 1 192.168.10.253 >/dev/null;then
  3. echo "`(date +"%m/%d/%Y %T")` reboot_ " >> /etc/persistent/log;
  4. /usr/etc/syswrapper.sh soft-restart #cfgmtd -w -p /etc/;/etc/rc.d/rc restart
  5. fi
复制代码
上面的脚本已经在2.4.6 3.1.9测试过没问题。当初做这个脚本主要是2.4.x版本没有3.1.x版本的最低rssi值设置,但是回头来在普通环境这个脚本应该仍然优于官方的方法。官方是直接使用断线重连机制,似乎没做到类似sleep 60秒的操作。也许在zf网络它能做到连接更好的信号,在普通ap环境,windows的管理软件仍喜欢连旧的AP。。。所以多设备同一密码模式跟无缝不是一个概念,实际效果跟想像中的自动化连接不一样。

生成tar压缩包方法
cd /
tar -cf /etc/persistent/unifi.tar etc/persistent/file.txt etc/persistent/cplog_dato.sh etc/persistent/rc.prestart etc/persistent/rc_dato.sh etc/persistent/rb_dato.sh etc/persistent/kick_dato.sh etc/persistent/cplog_dato.sh etc/persistent/etc

在自己的ap上进行安装
wget -O airos5-crond.tar http://webserver/airos5-crond.tar
tar xvf airos5-crond.tar
user=admin #设置你的AC设置的登录用户
chgrp -R $user /etc/persistent
chown -R $user /etc/persistent
ln -s /etc/persistent/etc/crontabs/ubnt /etc/persistent/etc/crontabs/$user
echo "echo UTC-8>/etc/TZ">>/etc/persistent/rc.prestart
echo "/usr/bin/crond &">>/etc/persistent/rc.prestart
/etc/persistent/rc.prestart

save
-----
讨厌的一点官方没有提供自启动运行脚本的方法,我也不知道windows下如何自动化管理,如果你有DDWRT设备可以直接
DROPBEAR_PASSWORD='my password' ssh user@hostname1 rc.prestart  
DROPBEAR_PASSWORD='my password' ssh user@hostname2  rc.prestart   
* 2013年12月1日星期日
- 可运行在 Tomato 上的免输密码登录 SSH 程序 SSHPASShttp://www.right.com.cn/forum/thread-133334-1-1.html
(出处: 恩山WIFI论坛)
通过/etc/rc.d/rc restart 操作,目前手头的最长的已经运行uptime 11天时间了,当然有时候是因为公司停电,有时候可能因为看门狗的问题。因为没有tomato下ssh 登录方法,上面的链接SZPUNK提供了一个静态版本可以运行在shibby tomato 115版本,哈这下可以重运行rc.prestart 脚本了  sshpass -p only2w ssh admin@r1 rc.prestart

其它问题,公司里4台ap的其中一台经常性的,间谒性的出现mca-ctrl -t dump/Segmentation fault 错误,这个错误会导致脚本的mca-dump没法正常工作。然后使了很多方法替换更换过多次AP,只要在这个位置就这样我都无语了。后来将这台tftp方式更新为3.1.9就没再遇到了。  

http://community.ubnt.com/t5/UniFi-Troubleshooting/UniFi-TFTP-soft-recovery-for-bricked-access-point/ta-p/607605

其它的踢除方法

https://github.com/unifi-hackers/unifi-lab
https://community.ubnt.com/t5/UniFi-Configuration-Examples/UniFi-Set-minimum-RSSI-for-clients/ta-p/522637




本帖子中包含更多资源

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

x
回复

使用道具 举报

7

回帖

37

积分

4 小时

在线时间

新兵上阵

注册时间
2012-10-30
金币
30 个
威望
0 个
荣誉
0 个

尚未签到

发表于 2014-2-19 12:24 |显示全部楼层
看了好久都没懂
回复

使用道具 举报

641

回帖

2840

积分

1721 小时

在线时间

少校

注册时间
2010-1-31
金币
1969 个
威望
5 个
荣誉
1 个

尚未签到

发表于 2014-3-25 16:06 |显示全部楼层
本帖最后由 dato 于 2014-3-25 17:44 编辑

  
更新的新版本,前面那个版本有个严重的错误,好久才发现,新版本主要新添加两点,去除内置的tc分组流控功能,平时用ddwrt这种流控功能对我没用。最重要的屏蔽10001的这个用于UniFi-Discover,在前端路由上再也收不到这个广播包了,不影响AC管理。当然如果你的AC不固定IP经常变IP的话,似乎会找寻不着,这个脚本请自行测试

for ath in `ls /proc/sys/net | grep ath` ; do tc qdisc del dev $ath root 2> /dev/null > /dev/null;done


ebtables -F
ebtables --append OUTPUT --proto IPv4 --dst Broadcast --ip-proto udp --ip-dport 10001 -j DROP



如何用ddwrt路由远程SSH管理UAP

ddwrt支持这种格式的命令行进行远程登录操作 DROPBEAR_PASSWORD='my password' ssh user@hostname
1,首先登录uap并生成known_hosts文件
2,将该文件以自定义参数known_hosts贮存到nvram空间
3,生成启动脚本开机将内容以文件形式保存
4,生成自定义脚本
5,使用cron任务进行定时操作

改一下
sleep 15
rm -r ~/.ssh
mkdir ~/.ssh
nvram get known_hosts>~/.ssh/known_hosts




本帖子中包含更多资源

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

x
回复

使用道具 举报

8

回帖

111

积分

20 小时

在线时间

上等兵

注册时间
2013-12-24
金币
81 个
威望
2 个
荣誉
1 个
累计签到:1 天
连续签到:0 天
[LV.20]漫游旅程
发表于 2014-4-1 20:42 |显示全部楼层
3,生成启动脚本开机将内容以文件形式保存
4,生成自定义脚本
兄弟能否将这两部讲解一下,看不懂
ddwrt路由器我也刷了一个,你的 12.253是固定ip(AP)吗?
我有好几个AP 是dhcp的有无影响?
回复

使用道具 举报

641

回帖

2840

积分

1721 小时

在线时间

少校

注册时间
2010-1-31
金币
1969 个
威望
5 个
荣誉
1 个

尚未签到

发表于 2014-4-1 21:44 |显示全部楼层
夜星 发表于 2014-4-1 20:42
3,生成启动脚本开机将内容以文件形式保存
4,生成自定义脚本
兄弟能否将这两部讲解一下,看不懂

这部分内容上次用公司的路由来截图并未做重启操作,原则上应该是没问题

3,生成启动脚本开机将内容以文件形式保存
sleep 15
rm -r ~/.ssh
mkdir ~/.ssh
nvram get known_hosts>~/.ssh/known_hosts

这几步的作用将ssh登录密钥从nvram空间保存到 ~/.ssh/known_hosts  ,这样就避免了ddwrt路由重启时第一次登录uap需要有个按 y 的过程。所以有每台uap都要登录一遍以保存每台uap的密钥。

4,生成自定义脚本
ddwrt唯一一处可以生成可执行 custom.sh 的地方。
15 7 * * * root /tmp/custom.sh
在每天的7点15执行一次,登录路由执行内部脚本,登录路由重启操作。


ddwrt路由器我也刷了一个,你的 12.253是固定ip(AP)吗?
我有好几个AP 是dhcp的有无影响?
这里就无所谓了,只要你把ddwrt配个ip地址,可以访问到uap就可以了。我那截图是telnet 到前端的ddwrt路由再ssh到uap里的。把ddwrt路由的dhcp功能关闭就可以了。


回复

使用道具 举报

1964

回帖

9946

积分

1530 小时

在线时间

中校

灌水天才

注册时间
2009-10-11
金币
7796 个
威望
2 个
荣誉
1 个
累计签到:567 天
连续签到:0 天
[LV.730]常住居民
发表于 2014-4-19 00:14 |显示全部楼层
本帖最后由 Joey_Yang 于 2014-4-19 17:42 编辑

楼主很强悍啊,谢谢分享

可是楼主我看了几遍都没看懂啊,可否详细而有条理的说明一下,谢谢
回复

使用道具 举报

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

本版积分规则

站点统计 | Archiver | 手机版 | 无线门户 ( 粤ICP备11076993号|粤公网安备44010602008359号 ) |网站地图

GMT+8, 2024-4-26 03:55

返回顶部 返回列表