X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Fbin%2Farp-recon;h=c96192ffc46d3e21e7b606fae677d1dec541f5d8;hb=44be784b13f5e7535b1a04152a2a3974fe5efc80;hp=bee996d6971d2a6f34d3ac695dc0852bb8a034f3;hpb=29e5f1be54dd3206aeb5b7c22a9808d14a3c8b44;p=khome.git diff --git a/home/bin/arp-recon b/home/bin/arp-recon index bee996d..c96192f 100755 --- a/home/bin/arp-recon +++ b/home/bin/arp-recon @@ -49,7 +49,9 @@ log() { while :; do debug '(>) scan' - sudo arp-scan --localnet; + if ! sudo arp-scan --localnet; then + error 'scan failed' + fi debug '(.) scan' sleep "$interval"; done \ @@ -67,8 +69,8 @@ status() { local -r log_file="$1" ( - echo 'mac ip last first freq dist' - echo '--- -- ---- ----- ---- ----' + echo 'mac ip staleness_cur staleness_avg age freq dist' + echo '--- -- ------------- ------------- --- ---- ----' sort -n -k 1 "$log_file" \ | awk -v now="$(date '+%s')" \ ' @@ -77,6 +79,7 @@ status() { mac = $2 ip = $3 + interval[mac, ip, intervals[mac, ip]++] = ts - seen_last[mac, ip] freq[mac, ip]++ if (!seen_last[mac, ip] || ts > seen_last[mac, ip] ) seen_last[mac, ip] = ts if (!seen_first[mac, ip] || ts < seen_first[mac, ip]) seen_first[mac, ip] = ts @@ -87,14 +90,19 @@ status() { split(key, macip, SUBSEP) mac = macip[1] ip = macip[2] - last = now - seen_last[mac, ip] - first = now - seen_first[mac, ip] + staleness_cur = now - seen_last[mac, ip] + age = now - seen_first[mac, ip] dist = 100 * (freq[mac, ip] / NR) + intervals_sum = 0 + for (i=1; i<=intervals[mac, ip]; i++) + intervals_sum += interval[mac, ip, i] + staleness_avg = intervals_sum / intervals[mac, ip] print \ mac, \ ip, \ - sprintf("%d", last), \ - sprintf("%d", first), \ + sprintf("%d", staleness_cur), \ + sprintf("%d", staleness_avg), \ + sprintf("%d", age), \ freq[mac, ip], \ sprintf("%d", dist) }