自动统计AP在线人数
思科AP查询信道利用率、链接数量命令
show ap name <AP name> auto-rf dot11 24ghz
show ap name <AP name> auto-rf dot11 5ghz
show ap name <AP name> auto-rf dot11 dual-band
以上命令可以看到要查找的AP的per radio关联的客户端数量。
Load Information
Load Profile : Passed
Receive Utilization : 0%
Transmit Utilization : 1%
Channel Utilization : 16% //信道利用率
Attached Clients : 0 clients //AP当前radio关联的客户端数量。
脚本目的:
自动统计各个会议室的AP链接人数,确定在开会时会议卡顿不是因为会议AP承载人数过多导致
创建:一个文件,内容如下:(脚本文件名称为name)
CHNQDI-PNWAP0303,10.55.10.34,3F-05
CHNQDI-PNWAP0304,10.55.10.17,3F-04
CHNQDI-PNWAP0306,10.55.10.43,3F-01
CHNQDI-PNWAP0311,10.55.10.26,3F-08
#!/bin/bash #auto Statistics AP Number of Clients #脚本思路 pass=******* COUNT=`cat name | wc -l`
#统计需要登录AP有多少行 DIR=/Users/yunhui.han/shell/cisco/AP/info rm -rf info/* y
#执行前先删除之前读取下来的内容 for ((i=1;i<=${COUNT};i++)) do NAME=`cat name | awk -F, '{print $1}' | sed -n "${i}p"` expect << EOF | tee -a $DIR/$NAME.log set timeout -1 spawn ssh admin@`cat name | awk -F, '{print $2}' | sed -n "${i}p"`
#读取name里面中IP地址一列 expect { "yes/no" { send "yes\r";exp_continue} "*password: " { send "$pass\r"} } expect { "*>" { send "enable\r"} } expect { "Password: " { send "$pass\r"} } expect { "*#" { send "terminal length 0 \r"} } expect { "*#" { send "show dot11 clients\r"} } expect { "*#" { send "exit\r"} } expect eof EOF if [ $? = 0 ];then #统计AP链接多少用户 grep "No" $DIR/$NAME.log | wc -l >> $DIR/client #删除每行空格 sed -i '' 's/\ //g' $DIR/client #在每行前面添加,逗号 sed -i '' "${i} s/^/,/g" $DIR/client echo -e "\033[31m-----$NAME check sucess-----\033[0m" else echo -e "\033[31m----$NAME login dailed-----\033[0m" fi done paste name $DIR/client > ap.csv
#将这两个文件进行合并 sed -i '' '1 s/^/&name,IP address,location,user\n/g' ap.csv
#在ap.csv文件中添加开头 echo -e "\033[32m-----AP 整合成功-----\033[0m" #以上脚本执行完毕会形成ap.csv文件,通过excel打开会变成表格形式;如下截图:
/bin/bash alarm.sh
#执行以下脚本将AP使用人数过多将进行邮件报警;不要问为什么不合并到一起。
截图:
以下脚本发送邮件报警:
#!/bin/bash COUNT=`cat ap.csv | wc -l`
#读取ap.csv有多少行 DIR=/Users/yunhui.han/shell/cisco/AP rm -rf normal.txt rm -rf abnormal.txt
#执行前先清空文件 for((i=2;i<=${COUNT};i++)) #为什么从第2开始,因为ap.csv形成后第一行是name,ip,locaiton,user标题的内容 do MNU=`awk -F, '{print $4}' ap.csv | sed -n "${i}p"`
#读取每一行的AP使用人数 alarm=`cat ap.csv | sed -n "${i}p"`
#读取每一行 if [[ ${MNU} -ge 50 ]];then echo "${alarm}" >> abnormal.txt else echo "${alarm}" >> normal.txt fi done #以上的if判断,读取ap.csv每一行的链接人数,当超过AP链接超过50时将内容输出到abnormal.txt,当没有超过50时将内容输出到normal.txt
if [[ -f $DIR/abnormal.txt ]];then sed -i '' '1 s/^/ AP-name, IP address,location, user\n/g' abnormal.txt
#在新的文件添加标题 sed -i '' 's/,/\t/g' abnormal.txt
#将,逗号变成tab字符号 mail -s 'AP alarm' "yunhui.han@shopee.com" -F 'AP alarm' < abnormal.txt
#进行邮件报警;-s 是邮件标题;-F是邮件主题 echo -e "\033[31m mail already sent,file please check abnormal.txt\033[0m" else sed -i '' '1 s/^/ AP-name, IP address,location, user\n/g' normal.txt sed -i '' 's/,/\t/g' normal.txt echo -e "\033[31m AP use uesr normal,please check $DIR/normail.txt\033[0m" fi
#以上if判断语句,如果有abnormal.txt(代表异常文件)则进行邮件报警,如果没有则打印正常。
邮件报警如下: