Conectar rede WIFI pelo terminal

Publicado por Perfil removido (última atualização em 09/12/2015)

[ Hits: 7.276 ]

Download 6324.wifi




Faça de modo fácil conexões a redes Wifi WPA/PSK WPA2/PSK com DHCP e wpa_supplicant via terminal sem precisar ficar derrubando e levantando placas ou ficar digitando uma "grande" quantidades de linhas para fazer as coisas funcionarem bem.

Com este script/programa você apenas precisa escolher a placa a qual quer se conectar, a rede e digitar a senha para se conectar. E caso queira ainda pode testar a conexão via ping.

Para aqueles que curtem uma "tela preta", o script pode dar uma boa acelerada no trabalho de configuração de conexão a redes wifi.

Basta dar permissões de execução e executar. Qualquer dúvida leia os comentários no código fonte. :)

  



Esconder código-fonte

#!/bin/sh

#Carlos Eduardo S.M
#Rio de Janeiro
#27/11/2015.
#contato: carlinhosedubr@gmail.com
#Script para configurar redes wifi WPA-PSK / WPA2-PSK via dhcp
#WifiHueHue

#Os textos mostrados ao user não apresentam acentuações gráficas.
#Alguns terminais shell não suportam,"o meu não suportou", questão de compatiblidade.

###################INICIOOOOOOOO######INICIOOOOOOOOO########INICIOOOOOOOO#############

echo "Este programinha foi escrito sem acentuacoes graficas
para funcionar ateh em terminais sem suporte a tal."
echo "Sinta-se livre para reescreve-lo a teu modo ok? :) "
read para
clear
echo "WifiHueHue, Script para conectar Unix-like´s a redes wifi.
Redes WPA-PSK/ WPA2-PSK via dhcp."
echo "Atencao, soh escolha placas Wifi, do contrario ocorrerao erros."
echo "Listando placas de rede..."

#Variável placas para listar placas de rede reconhecidas pelo sistema.
#O "ifconfig -a" mostra todas as placas disponíveis no sistema,
#o pipe "|" manda tudo para o "grep" que pega as linhas que apresentem a constante "flags"
#(na versão do ifconfig do Slackware em inglês ),
#E o próximo pipe "|" manda #tudo para o "sed" Que exclui tudo após " flags",
#deixando apenas o nome da placa.
#Isso mostra um resultado limpo ao usuário contendo o nome das placas de rede ,
#(todas:ethernet, wlan, lo, etc....).
#Esta "filtragem" da saída do ifconfig vai Depender da versão e ou compilação do mesmo.
#Caso este script não mostre as tuas placas de rede ou mostre de modo errôneo,
#é possível que o "erro" esteja aqui na filtagem de saída do ifconfig.
#Para verificar como teu sistema emite o nome das placas digite "ifconfig -a"
# e veja que palavra ocorre depois do nome das placas,
#como no exemplo a seguir em um Linux Debian Like:
#
#linux@linux:$ ifconfig -a
#
#  wlan0      Link encap:Ethernet  HWaddr 99:99:99:99:99:99  
#                  BROADCAST MULTICAST  MTU:1500  Metric:1
#                  RX packets:0 errors:0 dropped:0 overruns:0 frame:0
#                  TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
#                  collisions:0 txqueuelen:1000 
#                  RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
#
#Nesta saída do "ifconfig -a" ele mostrou entre outras a placa wifi wlan0, observe o padrão:
#Ele mostra o nome da placa mais seis caracteres de espaço e o resto da linha.
#O que precisamos fazer é remover informações "desnecessárias" ao user mantendo o nome da placa. 
#Então usando o Pipe e o Grep fazemos:
#
#
#
#linux@linux:$ ifconfig -a | grep Link
#
# wlan0      Link encap:Ethernet  HWaddr 99:99:99:99:99:99  
#
#E ele mostra apenas a linha com a palavra "Link" que é a mesma linha que apresenta o nome da placa.
#Para limpar ainda mais este texto que é mostrado ao usuário
#usamos o Sed para fazer uma nova filtragem, a partir da anterior.
#Assim:
#
#
#linux@linux:$ ifconfig -a | grep Link | sed "s/ Link.*$//"
#
# wlano
#
#Como pode ver, o sed remove (escreve "espaço", vazio)
#tudo que está dentro de / Link.*// e após . (ponto)
#Ele irá remover da linha que o Grep filtrou tudo após o sexto espaço depois de Wlano,
#mostrando assim um texto limpo ao usuário.

#Opção pré definida para sistemas Debian Like. "Funcionou no Linux Antix 12 Core".
#Comente ou descomente ou edite a próxima linha de acordo com a necessidade.
#placas=$(ifconfig -a | grep Link | sed "s/ Link.*$//")

#Opçao pré definida para Slackware 14 ou Slackware Like. "Funcionou no Slackware Linux 14 32 bit".
#Comente ou descomente ou edite a próxima linha de acordo com a necessidade.
placas=$(ifconfig -a | grep flags | sed "s/: flags.*$//")

#Aguarda 3 segundos, o comando acima pode demorar(?), por isso esperar 3 segundos.
sleep 3

#Mostra as placas ao usuário e pergunda a qual deseja se conectar e guarda a resposta em $escolhida.
echo "Estas sao as placas reconhecidas pelo sistema:"
echo ""
echo $placas
echo ""
echo "Digite o nome da placa Wifi ao qual deseja se conectar."
read escolhida

#Aqui se pergunta ao usuário se ocorreram mensagens de erro e ou se ele escolheu a placa correta,
#caso QUEIRA, o script pode ser abortado.
echo "Esta certo(a) de que esta eh a placa a qual quer se conectar?"
echo ""

#Mostra ao usuário as informações sobre a placa ou um erro de não existência.
#É responsabilidade dele sair em caso de erro.
#A mensagem é emitida pelo ifconfig.
ifconfig $escolhida
echo ""

#Pergunta se ocorreram erros, se o usuário deseja continuar.
echo "Caso tenha ocorrido uma mensagem de erro dizendo que a placa nao existe,"
echo "Ou tenha escolhido a placa errada,
saia e revise o nome da placa e ou tua digitacao e tente novamente."
echo "A responsabilidade de revisar possiveis erros eh toda tua!!!."
echo "Quer continuar? Digite s para sim ou n para nao.
Atencao, continuar com erros vai causar mais erros."
read erros_sucesso

#Verifica a resposta do user, se s continua. se qualquer outra coisa sai.
if [ $erros_sucesso = s ]
then
echo "Ok, irei derrubar e levantar a placa $escolhida ."
ifconfig $escolhida down && echo "Placa Derrubada..."
ifconfig $escolhida up && echo "Placa Levantada..."
else
echo "Ok, voce decidiu sair."
echo "Saindo..."
exit
fi

#Mata o dhclient e o wpa_supplicant sem aviso prévio e manda toda saida para /dev/null.
#Estes dois binários quando em execução ao mesmo tempo que este script causaram erros do tipo: 
#"Esta interface não suporta scaneamento".
#Matar os dois processos antes da execução de novos foi a solução que encontrei.
killall dhclient 1> /dev/null 2> /dev/null
killall wpa_supplicant 1> /dev/null 2> /dev/null

#Faz um scaneamento das redes wifi ao redor e filtra o resultado com o sed para mostrar ao usuário.
#Aqui o sed imprime a linha após uma string e a linha da string,
#cada N significa mais uma linha após a string.
#É o iwlist quem faz o scaneamento das redes ao alcance.
sleep 3
echo "Ok, escolha agora uma rede para se conectar."
echo "Procurando Redes..."
echo ""
iwlist $escolhida scan | sed -n '/Cell */{N;N;N;N;N;p;}'
echo ""
#sleep 5

#Pede que o user digite a rede a qual quer se conectar e registra a resposta em $rede.
echo "Digite o ESSID (nome da rede) sem aspas ao qual deseja se conectar:"
read rede

#Dá mais uns avisos sobre a escolha da placa e da rede e pede a senha da rede escolhida
# para registrar em $senha_wifi
echo "Voce escolheu se conectar a rede $rede usando a placa $escolhida."
echo "OBS: Se estiver correto continue.
Para escolher outra configuracao saia com Ctrl+c e tente novamente."
echo "Digite a senha da rede:"
read senha_wifi
echo "Gerando arquivo de configuracao em /etc/wpa_supplicant/wifi.config "
wpa_passphrase $rede $senha_wifi > /etc/wpa_supplicant/wifi.config && echo "Configuracao gerada."
echo "Tentando estabelecer conexao com a rede $rede..."
echo "Em caso de mensagem de erro por senha errada,
placa ou rede nao encontrada, aborte e comece novamente. Ctrl+c."

#Para diminuir o tamanho da linha de "conexao estabelecida" no programa criei esta constante.
sucesso="Conexao estabelecida"

wpa_supplicant -i $escolhida -D wext -c /etc/wpa_supplicant/wifi.config -B && echo $sucesso
echo "Recebendo endereco IP por dhcp na rede $rede..."
dhclient $escolhida && echo "Conectado via dhcp."
echo "Voce quer PINGAR um site para testar tua conexao com a rede?"
echo "s para sim ou n para nao."
read ping_test

if [ $ping_test = s ]
then
echo "Digite o endereco a ser pingado. Exemplo: www.google.com"
read endereco_ping
echo "Pingando...."
ping $endereco_ping
else
echo "Ok, saindo...."
sleep 3
exit
fi


#######################################################################################
#######################################################################################
#############################SOBRE O PROGRAMA/SCRIPT#################################
#####    Este script nada mais é que uma ferramenta para facilitar o manuseio
#####                    dos programas já existentes nas distros GNU/Linux.
#####
#####           Ele foi escrito usando o Slackware Linux 14 32 bit - instalação Full.
#####
#####                Estes programas são: 
#####  bash : GNU bash, version 4.2.37(2)-release (i486-slackware-linux-gnu)
#####  ifconfig : Binário/utilitário do pacote net-tools-1.60.20120726git-i486-1.txz > Slackware 14
#####  echo : GNU coreutils 8.19 > Slackware 14 32 bit
#####  read : Sem informações sobre versão e desenvolvedor > Slackware 14 32 bit
#####  clear : Sem informações sobre versão e desenvolvedor > Slackware 14 32 bit
#####  sleep : GNU coreutils 8.19  > Slackware 14 32 bit
#####  if fi : Sem informações sobre versão e desenvolvedor, binário original > Slackware 14 32 bit
#####  iwconfig : Wireless-Tools version 29, binário original > Slackware 14 32 bit
#####  iwlist : Wireless-Tools version 29, binário original > Slackware 14 32 bit 
#####  sed : GNU sed version 4.2.1 > Slackware 14 32 bit
#####  grep : grep (GNU grep) 2.14 > Slackware 14 32 bit
#####  exit : Sem informações sobre versão e desenvolvedor, binário original > Slackware 14 32 
#####  wpa_supplicant v1.0 , Jouni Malinen <j@w1.fi> and contributors > Slackware 14 32 bit 32
#####  wpa_passphrase : Jouni Malinen <j@w1.fi> and contributors > Slackware 14 32 bit
#####  dhclient : Internet Systems Consortium DHCP Client 4.2.4-P2 > Slackware 14 32 bit
##############################################################################################
##############################################################################################
##############################################################################################

Scripts recomendados

Download, instalação e atualização de utilitários para Ubuntu

SlackBuild para empacotar o Firefox (binário) pro Slackware

edita

Monitorar Funcionamento do Apache

InstallDPKG - Instalando pacotes DEB no Slackware


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts