GDH Press: Blog » Script para configurar redes wireless no Debian ou Ubuntu
 
RSS

Script para configurar redes wireless no Debian ou Ubuntu

Publicado em 24/02/2009 – 17:14
por Carlos Morimoto

O Debian Lenny trouxe um suporte a placas wireless sensivelmente melhorado, oferecendo inclusive os firmwares proprietários para placas wireless Intel e Ralink (muito diferente do que tínhamos no Etch, onde quase tudo precisava ser feito manualmente). Eles não vêm instalados por padrão, mas podem ser instalados rapidamente através dos pacotes "firmware-iwlwifi", "firmware-ipw2×00" e "firmware-ralink". Veja só

$ apt-cache search firmware-iwlwifi
firmware-iwlwifi -- Binary firmware for Intel Wireless 3945 and 4965

$ apt-cache search firmware-ipw2×00
firmware-ipw2×00 -- Binary firmware for Intel Pro Wireless 2100, 2200 and 2915

$ apt-cache search firmware-ralink
firmware-ralink -- Binary firmware for Ralink RT2561, RT2571, RT2661 and RT2671 wireless cards

Como o sistema passou a detectar a placa sozinho na grande maioria dos casos, fica faltando apenas a configuração da rede, que pode ser automatizada usando este script.

Ele gera o arquivo de configuração do wpa_supplicant e em seguida configura o arquivo /etc/network/interfaces, solucionando alguns problemas de configuração comuns pelo caminho. Essa mesma configuração também funciona no Ubuntu, onde o script pode ser usado para configurar a rede wireless manualmente, desativando o NetworkManager, a mesma configuração que comentei no post sobre ele:

A configuração manual é feita em dois passos. O primeiro é gerar o arquivo de configuração do wpa_supplicant, usando o wpa_passphrase, especificando o nome da rede (ex: rede) e a passphrase de acesso (ex: 123456), como em:

# wpa_passphrase rede 123456 > /etc/wpa_supplicant.conf

Assim como em outros comandos que escrevem diretamente em arquivos, ele precisa ser executado diretamente como root, não com o sudo.

Com o arquivo de configuração gerado, falta apenas a configuração no arquivo "/etc/network/interfaces". A configuração é a mesma que a usamos para placas cabeadas, com a adição de duas novas linhas, que ativam o uso do wpa_supplicant e indicam o arquivo de configuração que será usado, como em:

auto lo wlan0
iface lo inet loopback
iface wlan0 inet static
address 192.168.1.23
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
wpa-driver wext
wpa-conf /etc/wpa_supplicant.conf

De volta ao post de hoje, você pode baixar o script no:

http://www.gdhpress.com.br/blog/arquivos/wireless-config.zip

Como de praxe, basta descompactar o arquivo e executar o script como root.

Aqui vai o "código fonte" do script para que você possa estudá-lo:

#!/bin/sh
# Script para configurar placas wireless manualmente no Ubuntu e Debian
# Por Carlos E. Morimoto
# http://www.gdhpress.com.br
# http://www.guiadohardware.net
# Pode ser alterado e redistribuído livremente dentro dos termos da GPL

clear
echo 'Este script permite configurar placas wireless no Ubuntu
e no Debian. Para usá-lo, é necessário que sua placa wireless
tenha sido reconhecida pelo sistema e seja listada na saída do
comando "cat /proc/net/wireless".

Ao usá-lo, será gerado o /etc/wpa_supplicant.conf e a
configuração da rede será salva no arquivo /etc/network/interfaces
(subscrevendo a configuração anterior). Caso o NetworkManager
esteja ativo, ele será desativado pela modificação no arquivo.
(Enter para continuar)'
read pausa
sleep 1

# Verifica se o script está sendo executado pelo root.
if [ "`id -u`" != "0" ]; then
echo 'Este script precisa ser executado como root. Digite "su -"
para se logar como root e execute o script novamente.
Se você está usando o Ubuntu, defina a senha de root usando o
comando "sudo passwd" e em seguida logue-se usando o "su -".
Para facilitar, você pode copiar este script para a pasta
/usr/local/bin/, de forma a não precisar mais executá-lo usando
o caminho completo ou o ./
'
read pausa
exit 0
fi

# Detecta a placa wireless
placa=`cat /proc/net/wireless | tail -n 1 | cut -f 1 -d ":"`
if [ -z "$placa" ]; then
echo "Não foi possível detectar a placa wireless."
echo "Certifique-se de que ela esteja sendo detectada pelo sistema."
exit 2
else
echo ''
echo "Detectada a placa $placa"
echo ''
fi

if [ -e "/sbin/wpa_supplicant" ]; then

# Verifica se existe uma placa cabeada já configurada
rede=`ifconfig | grep eth0`
if [ -n "$rede" ]; then
echo "Aparentemente você tem uma placa cabeada já configurada."
echo "Gostaria de desativá-la? (s/n)"
read resposta
if [ "$resposta" = "s" ]; then
echo 'ifconfig eth0 down'
echo ''
ifconfig eth0 down
fi
fi

sleep 1

# Pergunta as configurações da rede wireless:
echo "Digite o nome (ESSID) da rede wireless. ex: casa"
read SSID
echo ''
echo "Digite a chave de encriptação da rede. ex: 123456"
read KEY
# Gera a configuração do wpa_supplicant
wpa_passphrase $SSID $KEY > /etc/wpa_supplicant.conf
echo ''
echo "Arquivo /etc/wpa_supplicant.conf gerado:"
echo ''
cat /etc/wpa_supplicant.conf
echo ''

# Faz backup do arquivo /etc/network/interfaces
DATA=`date +%Y-%m-%d-%H.%M`
cp -a /etc/network/interfaces /etc/network/interfaces.$DATA
echo "Backup gerado: /etc/network/interfaces.$DATA"

sleep 1
echo ''

echo "Configurar a rede via dhcp? (s/n)"
read resposta
if [ "$resposta" = "s" ]; then
# Escreve o novo arquivo:
echo "auto lo $placa" > /etc/network/interfaces
echo "iface lo inet loopback" >> /etc/network/interfaces
echo "iface $placa inet dhcp" >> /etc/network/interfaces
echo "wpa-driver wext" >> /etc/network/interfaces
echo "wpa-conf /etc/wpa_supplicant.conf" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'Novo arquivo /etc/network/interfaces gerado:'
cat /etc/network/interfaces
else

echo "Digite o endereço IP. Ex: 192.168.1.65"
read IP
echo ''
echo "Digite a máscara. Ex: 255.255.255.0"
read MASK
echo ''
echo "Digite o endereço da rede. Ex: 192.168.1.0"
read NETW
echo ''
echo "Digite o endereço de broadcast Ex: 192.168.1.255"
read BROAD
echo ''
echo "Digite o endereço do gateway. Ex: 192.168.1.1"
read GW
echo ''
echo "Digite o endereço do DNS primário. Ex: 208.67.222.222"
read DNS1
echo ''
echo "Digite o endereço do DNS secundário Ex: 208.67.220.220"
read DNS2
echo ''
# Escreve o novo arquivo:
echo "auto lo $placa" > /etc/network/interfaces
echo "iface lo inet loopback" >> /etc/network/interfaces
echo "iface $placa inet static" >> /etc/network/interfaces
echo "address $IP" >> /etc/network/interfaces
echo "netmask $MASK" >> /etc/network/interfaces
echo "network $NETW" >> /etc/network/interfaces
echo "broadcast $BROAD" >> /etc/network/interfaces
echo "gateway $GW" >> /etc/network/interfaces
echo "wpa-driver wext" >> /etc/network/interfaces
echo "wpa-conf /etc/wpa_supplicant.conf" >> /etc/network/interfaces
echo '' >> /etc/network/interfaces
echo 'Novo arquivo /etc/network/interfaces gerado:'
cat /etc/network/interfaces
echo "nameserver $DNS1" > /etc/resolv.conf
echo "nameserver $DNS2" >> /etc/resolv.conf
fi

sleep 1
echo ''

# Fecha o wpa_supplicant caso já ativo
killall wpa_supplicant

echo "Recarregando a configuração da rede:"
/etc/init.d/networking restart

sleep 3

echo 'Configuração completa. Se você está usando o Ubuntu, pode ser
necessário reiniciar para que o NetworkManager dê lugar à
configuração manual.

Para restaurar a configuração anterior (e restaurar o uso do
NetworkManager), restaure a configuração anterior da rede,
restaurando o arquivo de backup, como em:'

echo "rm /etc/network/interfaces"
echo "mv /etc/network/interfaces.$DATA /etc/network/interfaces"
echo ''


# Fim do laço iniciado no começo do script, que aborta caso o
# wpa_supplicant não esteja instalado.
else
echo "O arquivo /sbin/wpa_supplicant não está disponível."
echo "Cheque a instalação do wpasupplicant."
fi

» Mais posts

  1. 10 respostas para “Script para configurar redes wireless no Debian ou Ubuntu”

  2. Fernando Borges em 24 fev, 2009

    Ôpa, mais uma dica valiosa que acaba de sair do forno, :) Show de bola a dica e o Script, tive alguns problemas com placas wireless e o script certamente vai resolver. Apenas um detalhezinho no texto: No terceiro parágrafo, faltou uma barra em "/etc/networkinterfaces". Corrigindo, ficaria "/etc/network/interfaces". Mais uma vez parabéns!

  3. André Gondim em 25 fev, 2009

    Bem interessante!!

    Abraços!! ;)

  4. Zé Carlos em 25 fev, 2009

    Será que minha placa wirelles com chipset RTL8180L será reconhecida pelo Debian Lenny após instalar o firmware-ralink???

  5. LINDOLFO SILVEIRA KEMMERICH em 26 fev, 2009

    Achei legal a explicacao e principalmente o script mas… os driver da ralink RT2561, RT2571, RT2661 and RT2671 nao funcionam de jeito nenhum no meu notebook. A rede é detectada chega a conectar mas nao consigo navegar tambem nao consigo localizar outros micros na rede resumindo… nao vai
    A solucao foi compilar o driver encontrado aqui http://rt2×00.serialmonkey.com/rt73-cvs-daily.tar.gz ai sim funciona mas sem wep ou wpa/wpa2. nao sei se e porque o driver nao tem suporte pra isso ou se sou eu que nao estou sabendo configurar.

    meu roteador sem fio tem suporte a controle de acesso por mac entao usar a rede sem wep ou wpa nao e asim tao problematico pra mim.

    confesso que chegei a pensar que nao conseguiria fazer minha placa de rede sem fio funcionar no linux. mas lendo esse arigo aqui consegui fazer a danada funicionar http://guevara2012.wordpress.com/2008/04/07/instalando-placa-wireless-ralink-rt73-no-ubuntu-gutsy/

  6. Passarin Jr. em 6 mar, 2009

    Olha só, eu configurei minha net pra iniciar no boot apenas editando o arquivo /etc/rc5.d/S99rc.loca. Acrestei as seguintes linhas no final do arquivo:

    #iniciar rede
    ifconfig wlan0 up
    iwconfig wlan0 essid Gigabyte03
    dhclient

    "Gigabyte03" obviamente, é o nome da rede ( sem encriptação ). Tentei rodar teu script pra testar mas o wpasupplicant não está instalado, como a net tá funcionando sem problemas não me dei ao trabalho de instalá-lo. Outra coisa digna de nota é que o Debian reconheceu e ativou o drive correto pra minha placa wireless ( RTL8185, mas me parece que usando o módulo rll8180 ) coisa que nem o Kubuntu 8.10 conseguiu fazer.
    Abraços!

  7. biro167 em 9 mar, 2009

    tbm tetei instalar o debian 5 aqui, mais como uso uma placa rt2561 que tem driver nativo nele mais simplesmente não funciona nem a pau voltei pro kurumin, onde as coisas
    funcionam bem

  8. JU em 6 abr, 2009

    A configuração do arquivo /etc/network/interfaces vai funcionar normalmente sem o parâmetro "auto"???
    Já pesquisei em vários sites e todos indicam que se coloque e explicam que é pra automatizar o sistema, mas não dizem se sem esse parâmetro a configuração vai funcionar normalmente e nem como esse arquivo de configuração funcionaria sem esse parâmetro. Por favor, alguém responda! Desde já, agradeço!

  9. Eduardo em 6 abr, 2009

    Opa, será que poderiam me ajudar, tenho um notebook intelbras i10 que vem com uma placa de rede wireless da gigabyte, o ubuntu 8.10 reconhece com da atheros, grato se puderem me ajudar.

  10. Inacio Alves em 13 jun, 2009

    Gostaria de saber o que há de errado com este arquivo, pois o wpa_supplicant não está executando durante o boot, ai o dhcp tenta obter ip sem que a placa esteja associada ao meu ap
    iface wlan0 inet dhcp
    wpa-ssid MinhaRede
    wpa-psk MinhaSenha
    wpa-bssid MAC
    wpa-driver wext
    wpa-conf /etc/wpa_supplicant.conf
    up /sbin/wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext -B
    up #wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant.conf -B
    down killall -9 wpa_supplicant
    auto wlan0

  11. Inacio Alves em 14 jun, 2009

    Uma pequena correção no script acima, mas mesmo assim não funciona
    iface wlan0 inet dhcp
    wpa-ssid MinhaRede
    wpa-psk MinhaSenha
    wpa-bssid MAC
    wpa-driver wext
    wpa-conf /etc/wpa_supplicant.conf
    up /sbin/wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -D wext -B
    #up wpa_supplicant -i wlan0 -D wext -c /etc/wpa_supplicant.conf -B
    down killall -9 wpa_supplicant
    auto wlan0


Comente: