#!/bin/sh iwlist scan 2>/dev/null | awk ' function flush() { printf("%3s %-32s %2s %9s dBm %s\n", cell, essid, chan, signal, crypt) cell = "?" essid = "?" signal = "?" crypt = "?" chan = "?" } /^ *Cell/ { if (cell != "") flush() match($0, /[0-9]+/) cell = substr($0, RSTART, RLENGTH) } /^ *ESSID:/ { match($0, /"[^"]*"/) essid = substr($0, RSTART+1, RLENGTH-2) } /^ *Quality/ { match($0, /Signal level[=:][^ ]* /) signal = substr($0, RSTART+13, RLENGTH-14) match($0, /Noise level[=:][^ ]* /) signal = signal "/" substr($0, RSTART+12, RLENGTH-13) } /^ *Encryption key:off/ { crypt = "open" } /^ *Encryption key:on/ { crypt = "WEP" } /^ *IE: WPA/ { crypt = "WPA" } /^ *Extra:wpa_ie/ { crypt = "WPA" } /^ *Frequency:/ { match($0, /Channel [0-9]*/) chan = substr($0, RSTART+8, RLENGTH-8) } END { if (cell != "") flush() }'