#!/bin/bash # authors : Petr Simandl www.simandl.cz # # release date : 1/1/2003 # name : wifimon # version : 0.2 beta # description : hostap powered wifi card monitoring # license : GPL wl_iwccmd="/usr/local/sbin/iwconfig" wl_ifccmd="/sbin/ifconfig" wl_hnmcmd="/bin/hostname" wl_hostap="/proc/net/hostap/" wl_wireless="/proc/net/wireless" wl_arp="/proc/net/arp" wl_webpage="/tmp/wifimon.htm" wl_header="
" wl_header_static="Wifimon @ `$wl_hnmcmd` " wl_footer="" wlm_no_managed_or_master=" neni ani Master ani Managed..." wlm_number_of_clients="Pocet asociovanych klientu : " #wlm_no_managed_or_master=" is not Master or Managed..." #wlm_number_of_clients="Number of associated clients : " ###################################################################### w_bar() { until [ "$wl_cnt" -eq -1 ] do printf "=" wl_cnt=$(($wl_cnt - 1 )) done printf " \n" } # w_bar ###################################################################### w_managed() { echo $wl_iwctxt | awk '{print $1,$3,$4,$5" "}' echo -n `$wl_ifccmd $wl_iface | grep -E "inet addr|inet adr" | awk '{print $2" "}' | sed s/ad*r://g`" " # IP adresa mastera z ifconfig echo $wl_iwctxt | awk '{print $9,$6,$11" "}' #echo $wl_iwctxt | awk '{print $27,$28,$29,$31,$32" "}' #cat $wl_wireless | grep $wl_iface wl_wtxt=`cat $wl_wireless | grep $wl_iface | awk '{print $3,$4,$5}' | sed 's/\.//g'` wl_quality=`echo $wl_wtxt | awk '{print $1}'` wl_signal=`echo $wl_wtxt | awk '{print $2}'` wl_signal=$(($wl_signal - 256)) wl_noise=`echo $wl_wtxt | awk '{print $3}'` wl_noise=$(($wl_noise - 256)) echo Quality:$wl_quality/92 Signal level:$wl_signal Noise level:$wl_noise wl_cnt=$wl_quality w_bar #wl_cnt=$(($wl_cnt + 100)) #w_bar echo } # w_managed ###################################################################### w_master() { echo $wl_iwctxt | awk '{print $1,$3,$4,$5" "}' echo $wl_iwctxt | awk '{print $6,$9,$11" "}' wl_numcl=`ls $wl_hostap$wl_iface | grep -c 00` echo $wlm_number_of_clients $wl_numcl for wl_mac in `ls $wl_hostap$wl_iface | grep 00 ` do wl_macparam=`cat $wl_hostap$wl_iface/$wl_mac | grep -E 'last_rx|last_tx'` wl_cnt=`echo $wl_macparam | awk '{print $5}' | sed 's/signal=//g'` wl_umac=`echo $wl_mac | tr abcdef ABCDEF` wl_ipc=`cat $wl_arp | grep $wl_umac | awk '{print $1}'` # IP adresa peeru z arp tabulky echo $wl_ipc $wl_umac Signal $wl_cnt $wl_macparam | awk '{print $1,$2,$3,$4,$5" "}' w_bar done echo } # w_master ###################################################################### w_iface() { wl_iwctxt=`$wl_iwccmd $wl_iface | grep -v 'Device|Some|Extension' | sed 's/ Nick/_Nick/g'` wl_mode=`echo $wl_iwctxt | awk '{print $5}' | sed 's/Mode://g'` if [ "a$wl_mode" = "aManaged" ] then w_managed elif [ "a$wl_mode" = "aMaster" ] then w_master else echo $wl_iface $wlm_no_managed_or_master echo fi } ###################################################################### ###################################################################### case $1 in -help) echo Pouziti: wifimon [param] echo param: echo -htm cyklicke generovani stranky s 1s obnonovanim echo -htm1 jedna staticka stranka echo bez parametru cyklicky vypis na obrazovku ;; -htm1) echo $wl_header_static > $wl_webpage for wl_iface in `ls $wl_hostap` do w_iface >> $wl_webpage done echo $wl_footer >> $wl_webpage ;; -htm) while [ 1 ] do echo $wl_header > $wl_webpage.tmp for wl_iface in `ls $wl_hostap` do w_iface >> $wl_webpage.tmp done echo $wl_footer >> $wl_webpage.tmp cp $wl_webpage.tmp $wl_webpage sleep 1 done ;; *) clear while [ 1 ] do tput cup 0 0 for wl_iface in `ls $wl_hostap` do w_iface done sleep 1 done esac exit 0