On Sat, Jan 26, 2013 at 10:22 AM, Dave Taht
<dave.taht@gmail.com> wrote:
Once upon a time it was possible to write quick and dirty tools in shell. You used to just be able to open a port, write a tiny little daemon, and go. And we used to have handy tools like rwho and finger to figure out who was online, ruptime to check uptime, etc, etc.
That's too insecure nowadays...
so we have 3 different levels of snmp which you can use (if you can secure it), and
run a shell command from that, remotely, then parse... or use ssh, and parse.
And then we have dhcp, which hands out leases, but is not tied to how wifi goes up
and down.
This morning I had a need to figure who was actually on a couple cerowrt APs,
and a few statistics as to their connected rate...
I haven't got so as figuring out how to do all that via snmpd yet, but as this uses
an obscure feature of the mac802.11 stack, I thought I'd document this much.
If there is a better way, a mib, something, let me know....
#!/bin/sh
# rup: quickly see whos really on the wifi
A=`ls /sys/kernel/debug/ieee80211/phy*/netdev:*/stations | \
cut -f8 -d/ | tr '\n' '|'`
# cut off last |
egrep ${A%?} /tmp/dhcp.leases | awk '{print $3 " " $4 }'
Or, you can just stick it into /etc/xinetd.d/rup
service rup
{
disable = no
socket_type = stream
wait = no
user = nobody
only_from = my_ipv4_ip/32 my_ipv6_ip/64
port = 79
type = UNLISTED
server = /etc/rup
flags = IPv6
log_on_success += HOST USERID
log_on_failure += HOST USERID
instances = 4
}
nc 172.20.2.2 79 | awk '{print $1}' | fping -c 2 -q
and be done with it.
172.20.3.210 : xmt/rcv/%loss = 2/2/0%, min/avg/max = 6.64/187/368
172.20.3.99 : xmt/rcv/%loss = 2/0/100%
172.20.3.180 : xmt/rcv/%loss = 2/0/100%
172.20.3.141 : xmt/rcv/%loss = 2/2/0%, min/avg/max = 75.1/77.9/80.7
172.20.3.212 : xmt/rcv/%loss = 2/0/100%
172.20.3.128 : xmt/rcv/%loss = 2/2/0%, min/avg/max = 23.9/122/222
172.20.3.229 : xmt/rcv/%loss = 2/0/100%
172.20.3.172 : xmt/rcv/%loss = 2/0/100%
172.20.3.34 : xmt/rcv/%loss = 2/0/100%
172.20.3.102 : xmt/rcv/%loss = 2/2/0%, min/avg/max = 0.07/0.08/0.09
172.20.3.146 : xmt/rcv/%loss = 2/0/100%
and to gather remote rate stats:
#!/bin/sh
# Gather connected speeds and minstrel error rates from remote wifi
for i in /sys/kernel/debug/ieee80211/phy*/netdev:*/stations/*
do
RATE=`grep PMCS "$i/rc_stats"`
STATION=`echo $i | cut -f9 -d/`
[ -z "$STATION" ] && exit
B=`grep ${STATION} /tmp/dhcp.leases 2> /dev/null | awk '{print $3}'`
echo "$B $RATE"
done
# and I suppose this will blow up in ipv6...
--
Dave Täht
Fixing bufferbloat with cerowrt: http://www.teklibre.com/cerowrt/subscribe.html