Conectar rede WIFI pelo terminal
Publicado por Perfil removido (última atualização em 09/12/2015)
[ Hits: 7.729 ]
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. :)
#!/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 ############################################################################################## ############################################################################################## ##############################################################################################
Obtém fotos de uma Câmera Digital organizando em Subdiretórios e Renomeando
Beckup .tar.gz com Data e Hora
Trocar wallpaper (papel de parede) do Gnome
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta