Script para configurar redes wireless no Debian ou Ubuntu

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-ipw2x00” e “firmware-ralink”. Veja só

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

$ apt-cache search firmware-ipw2x00
firmware-ipw2x00 – 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:
https://e.cdn-hardware.com.br/static/media/press/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
# https://www.hardware.com.br
# 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

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X