n4t4n
(usa Arch Linux)
Enviado em 29/06/2011 - 18:42h
A configuração que fica no /etc/network/interfaces serve para que o sistema se baseie na hora do boot para configurá-lo de acordo com o especificado nele.
Alterar esse arquivo não é o mesmo que alterar o ip com ifconfig, então as regras não funcionam enquanto o serviço de rede não for reiniciado. Por isso que só funciona quando você reinicia.
Nesse caso você pode tentar adicionar ao final do script o comando para reiniciar o daemon responsável pela rede. No debian você faz /etc/init.d/networking restart, verifique se no big também é assim.
Também pode ver se depois da alteração do ip ele não desconecta, sendo necessário uma reconexão na rede sem fio, nesse caso usando o wpa_supplicant.
Caso não funcione veja o caso de ter cometido algum erro no script, como por exemplo o conteúdo da variável $ddd_loja que (pelo menos no post) não foi especificado no script, e portanto não é conhecido (valor nulo). Também fiquei na dúvida, o nome da sua interface sem fio é wlan? porque geralmente é wlan0, wlan1, ath0, etc.
Na minha opinião, como é um script quem está sendo responsável pela conexão você tem que configurar para que ele mesmo configure o ip e gateway em vez de mandar esses valores para o arquivo que é lido na inicialização. Nesse caso os valores do arquivo /etc/network/interfaces será desprezado e o script será iniciado todo boot, pois será o responsável por procurar o ip e configurá-lo.
Tente o script assim.
essid=`iwlist wlan0 scan | awk '{print $1}' | egrep -i "loja" | cut -d '"' -f2 | sed -n 1p`
iwconfig wlan0 essid $essid
ifconfig wlan0 $ip_livre netmask 255.255.255.0 broadcast 10.$ddd_loja.$numero_loja.255 up
route add default gw 10.$ddd_loja.$numero_loja.150
nameserver 200.217.169.181 > /etc/resolv.conf
Fora isso você deverá configurar (caso esteja conectando pela linha de comando e esteja usando WPA ou WPA2) o wpa-supplicant para conectar.
para isso você manda suas configurações para o wpa_supplicant.conf ou outro arquivo de sua escolha e depois conecta.
wpa_passphrase $essid SUASENHASEMFIO >> /etc/resolv.conf
wpa_supplicant -B -i wlan0 -c /etc/resolv.conf -D wext #(esse você adiciona ao script)
Dica: edite o arquivo que você colocou a senha da sua rede sem fio e apague a senha legível (que está comentada), e deixe apenas a que está criptografada. Também mude o dono do arquivo que contém a senha para o root e aplique um chmod 700 no arquivo para que somente o root possa ter acesso.
Obs.: Assumi que sua interface sem fio é wlan0, mas você terá que conferir e mudar se for o caso.