blob: ee765b98b8c7c86e14fc05b3ea305e281b646658 [file] [log] [blame]
#!/bin/sh
. /etc/utils.sh
taxonomize() {
sig="$1"
mac="$2"
python -c "import taxonomy; \
print ';'.join(taxonomy.identify_wifi_device('$sig', '$mac'))"
}
dhcpname() {
mac="$1"
while read -r time leasemac ip name junk; do
if contains "$leasemac" "$mac"; then
echo "$name"
fi
done </fiber/config/dhcp.leases
}
dhcpsig() {
mac="$1"
while read -r leasemac sig; do
if contains "$leasemac" "$mac"; then
echo "$sig"
fi
done </fiber/config/dhcp.fingerprints
}
stations24=""
stations5=""
(echo start; watch-dir /tmp/wifi/fingerprints) | while read junk; do
sleep 0.25
wifi24=$(wifi show -b 2.4 2>&1)
wifi5=$(wifi show -b 5 2>&1)
for file in /tmp/wifi/fingerprints/*; do
[ -e "$file" ] || continue
contains "$file" ".tmp" && continue
sig=$(cat "$file")
mac=$(basename "$file")
name=$(dhcpname "$mac")
tax=$(taxonomize "$sig" "$mac")
dhcpsig=$(dhcpsig "$mac")
stationskey="$mac|$sig"
if contains "$wifi24" "$mac"; then
contains "$stations24" "$stationskey" && continue
date
echo 2.4GHz: "$name" "$mac"
echo "$tax"
echo "$sig"
echo "dhcp|$dhcpsig"
echo
stations24="${stations24},$stationskey"
fi
if contains "$wifi5" "$mac"; then
contains "$stations5" "$stationskey" && continue
date
echo 5.0GHz: "$name" "$mac"
echo "$tax"
echo "$sig"
echo "dhcp|$dhcpsig"
echo
stations5="${stations5},$stationskey"
fi
done
done