Identificando sinal de rede sem fio em modo texto
Publicado por Wesley Henrique Leite (última atualização em 13/02/2012)
[ Hits: 6.394 ]
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
Proteção de tela automática com xlock
Descompactar arquivos RAR e ZIP em lote
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
Habilitando clipboard manager no ambiente COSMIC
A compatibilidade do LibreOffice com o Microsoft Office
Colocando hotcorner no COSMIC para exibir "workspaces"
Quais licenças open source têm valor jurídico? (1)
Problema com som no laptop (2)









