Identificando sinal de rede sem fio em modo texto
Publicado por Wesley Henrique Leite (última atualização em 13/02/2012)
[ Hits: 6.404 ]
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
SCRIPT PARA AUTOMAÇÃO NA CRIAÇÃO DE USUÁRIOS NO AMBIENTE LINUX.
Verificar badblocks em unidade de disco
Script para manutenção de um servidor asterisk
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
Gentoo binário em 2026: UEFI, LUKS, Btrfs e Systemd
Trabalhando Nativamente com Logs no Linux
Jogando Daikatana (Steam) com Patch 1.3 via Luxtorpeda no Linux
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)
Gentoo: Trocando wpa_supplicant pelo iwd no NetworkManager (Systemd)
O que houve com slackware ??? (12)
Alterar conteúdo de dica [RESOLVIDO] (3)
Vou destruir sua infância:) (5)









