Identificando sinal de rede sem fio em modo texto
Publicado por Wesley Henrique Leite (última atualização em 13/02/2012)
[ Hits: 6.405 ]
Este script baseia-se no resultado gerado pelo comando "iwlist" imprimindo uma barra colorida de indicador de sinal, nada demais apenas por diversão, foi testado apenas no OpenSuse, mas não acredito ter problemas com outras distros.
Exemplo de Saída:
"DYNAMIC" __________ [ ▒▒▒▒▒▒▒▒ ] WEP
^CYMBOL" ___________ [ ▒▒▒▒▒▒▒▒ ] ???????
Implementei dois modos:
-p (Persistente)
Neste modo a tela do terminal será limpa, em seguida será carregada em tempo real a lista de redes sem fio próximas a você, não é estático, ficará atualizando o tempo todo o sinal, a ordem das redes pode mudar.
-c (Console)
Idêntico ao modo acima, mas não fica atualizando.
Modo de usar:
./wifiSinal.sh -[c|p] <wlanX>
#!/bin/sh
#
# autor: Wesley Henrique Leite
# : wesleyhenrique [-] gmail ['] com
function ChecarError {
# ESSA FUNCAO EH INVOCADA SEMPRE QUE QUERO VERIFICAR SE
# ALGUM ERRO OCORREU NA EXECUCAO DO SCRIPT
# SE #? NAO FOR 0 ENTAO TEM ALGUM ERRO
if [ $? -ne 0 ]
then
echo "Ocorreu um erro"
exit
fi
}
function ScanRetEssid {
# PEGA SID DAS REDES
# CHECA SE DEU ALGUM ERRO
$IW $LAN scan | egrep "ESSID" | cut -d: -f2
ChecarError
}
function RetSinal {
# RECEBE COMO PARAMETRO O NOME DA REDE
# VERIFICA O SINAL DESTA REDE E RETORNA UM NUMERO
# DE 0 A 7
# EM SEGUIDA CHECA SE DEU ALGUM ERRO
ESSID=$1
SINAL=$($IW $LAN scan | grep -B2 $ESSID | cut -d"=" -f2 | cut -d"/" -f1 | cut -d" " -f1 | sed 's/a-zA-Z//g' )
echo ${SINAL:0:1}
ChecarError
}
function IEEE {
# RECEBE COMO PARAMETRO O NOME DA REDE E TENTA
# LOCALIZAR O PROTOCOLO UTILIZADO
ESSID=$1
W80211=$($IW $LAN scan | grep -A20 $ESSID | egrep -wo "(WPA|WPA2|WEP)" | cut -d: -f2-3 )
if [ -z "$W80211" ]
then
echo "???????"
else
echo ${W80211:0:4}
fi
}
function ImprimirBarra {
# E FINALMENTE IMPRIME UMA BARRA INFORMANDO
# O SINAL DA REDE
SINAL=$1
if [ -z $SINAL ]
then
SINAL=1
fi
for i in $(seq 1 7)
do
if [ $i -le $SINAL ]
then
echo -ne "{FONTE}33[;32;1m{FONTE}30{FONTE}33[m"
fi
if [ $i -ge $SINAL ]
then
echo -ne "{FONTE}33[;37;1m{FONTE}30{FONTE}33[m"
fi
done
ChecarError
}
function run {
# EH A FUNCAO QUE UTILIZO PARA RODAR O SCRIPT
NOME=$(ScanRetEssid $LAN)
for SID in $NOME
do
NomeDaRede="$SID __________________"
SIG="$(RetSinal $SID)"
echo -e "${NomeDaRede:0:20} [ $(ImprimirBarra $SIG) ] $(IEEE $NomeDaRede) "
done
ChecarError
}
##
# MAIN
##
# CHECA SE SEU ID PRINCIPAL EH DE ROOT
# NAO QUE NECESSARIAMENTE DEVA SER
# EXISTEM MANEIRAS DE UTILIZA O IWLIST
# COM USUARIO..
if [ $EUID -ne 0 ]
then
echo "Necessita ser root"
exit
fi
# LOCALIZA O EXECUTAVEL DO PROGRAMA PASSADO COMO PARAMETRO
IW=$(which iwlist)
LAN=$2
if [ -z "$IW" ]
then
# SE A VARIAVEL QUE CONTEM O IWLIST ESTIVER VAZIA
# O IWLIST NAO FOI ENCONTRADO EM SEU SISTEMA
echo "iwlist nao encontrado"
exit
fi
# BASICAMENTE O SCRIPT NECESSITA DE DOIS PARAMETROS
# SE INFORMAR MENOS OU MAIS QUE DOIS PARAMETRO ELE NAO RODARAH
if [ $# -ne 2 ]
then
printf "Modo de usar\n$0 -[p|c] wlanX\n"
exit
fi
# CASE PARA CHECAR OS PRIMEIROS PARAMETRO
case $1 in
"-p")
clear
while [ 1 ]
do
tput cup 0 0
run
done
;;
"-c")
run
;;
esac
Instalação do plugin java jre-1_5_0_01 linux-i586
Dialog, script de configuração de rede
Operações com valores em arquivo texto
Toca preview de músicas do XMMS
Cinnamon seria a aposta acertada frente às outras interfaces gráficas mais populares?
KDE Plasma - porque pode ser a melhor opção de interface gráfica
Gentoo: detectando impressoras de rede e como fixar uma impressora por IP
Como o GNOME conseguiu o feito de ser preterido por outras interfaces gráficas
Por que sua empresa precisa de uma PKI (e como automatizar EMISSÕES de certificados via Web API)
Instalando NoMachine no Gentoo com Systemd (acesso Remoto em LAN)
Vou destruir sua infância:) (8)
Interface gráfica com problema (2)
Instalar Linux em notebook Sony Vaio VPCEG13EB (13)









