Conectar rede WIFI pelo terminal

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

[ Hits: 7.271 ]

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

Informação sobre partições montadas em Xdialog

Firewall básico

Prompt Interativo para o Legendary

Configuração pós instalação do Slackware

Fatorial


  

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