Configuração de rede wireless (WPA)

Publicado por Dix (última atualização em 01/08/2014)

[ Hits: 3.087 ]

Download rede_vol




Criei um script básico para configurar a interface wireless desejada. Para isso, basta alterar as variáveis ou criar uma função personalizada seguindo as que já estão lá. É só não esquecer que alterar o "case" no final do script.

  



Esconder código-fonte

#!/bin/bash
#
# Shell Script - Configurador de Rede Wireless 3.0 by huddioli
# =======================
# by huddioli - 2014-07-29
#
# Testado no bash Debian 7
#
# Utiliza o "iwconfig", "dhclient", "wpa_passphrase", "wpa_supplicant"
# E o script "firewall.sh"; Pode ser personalizado, basta colocar o seu script pessoal
# Esse Script foi criado para conectar a redes Wireless com senha WPA
# Tirei as funcoes das senhas WEP, pois esse metodo é muito vulneravel
#
# Para executar o Script: rede_vol <opçoes>
#
# VARIAVEIS

# Para onde irao as saidas de erros
LOG_ERRO='/tmp/erro_script_rede.log'
# Para onde irao as saidas padrao dos programas
LOG_REDE='/tmp/script_rede.log'
# Lista de Interfaces Eth e Wlan
IFACES_1='/tmp/ifaces.txt'
# Arquivo Temporario
IFACES_2='/tmp/ifaces2.tmp'
# Hora definida para registrar no arquivo de LOG
AGORA=`date +%Y_%m_%d_%H:%M:%S`
#

# Montagem do inicio dos arquivos de LOG

echo -e "{FONTE}33[01;31m##################$AGORA##################{FONTE}33[01;37m\n" >> $LOG_ERRO
echo -e "{FONTE}33[01;31m##################$AGORA##################{FONTE}33[01;37m\n" >> $LOG_REDE

# Funcoes para configurar as variaveis da Rede Wireless
# Caso a configuracao de Rede seja via DHCP defina IP='dhcp'
# Caso contrario IP='10.5.1.1' MASCARA='255.255.255.0' DNS='10.5.1.254'
# O Proxy ainda nao implementei e nem o RTS e FRAG, mas vou atualizar

function ConfiguraIPTrabalho(){
    PLACA='wlan0'
    SSID='trabalho'
    PONTO_DE_ACESSO='54:E6:FC:D6:DB:DB'
    SENHA='VivaOLinux$AteAProxyma'
    CANAL='10'
    IP='10.5.1.100'
    MASCARA='255.255.255.0'
    GATEWAY='10.5.1.1'
    DNS='10.5.1.1'
    PROXY=''
    FIREWALL='firewall.sh'
}

function ConfiguraIPCasa(){
    PLACA='wlan0'
    SSID='Casa'
    PONTO_DE_ACESSO='54:E6:FC:D6:DB:DB'
    SENHA='TesteDeScriptPessoal'
    CANAL='1'
    IP='dhcp'
    MASCARA=''
    GATEWAY=''
    DNS=''
    PROXY=''
    FIREWALL='firewall.sh'
}

function ConfiguraIP2(){
    PLACA='wlan0'
    IP='10.5.1.3'
    MASCARA='255.255.255.0'
    GATEWAY='10.5.1.200'
    DNS='10.5.1.200'
    PONTO_DE_ACESSO='00:24:01:00:24:01'
    SSID='jaca'
    SENHA='T3st3D3ScriptPesso@l'
    CANAL='11'
    FIREWALL='firewall.sh'
}

#

function ProcuraInterfaces(){

# Essa funcao simplesmente cria uma lista com as interfaces eth e wlan

    if [ -e $IFACES_1 ];
        then
            rm -f $IFACES_1 2>> $LOG_ERRO >> $LOG_REDE
    fi

    if (\
        ifconfig -a | grep eth >> $IFACES_1 && \
        ifconfig -a | grep wlan >> $IFACES_1 &&\
        cat $IFACES_1 | while read LINHA; \
            do
                echo $LINHA| cut -d" " -f 1 >> $IFACES_2;
            done && \
        rm -f $IFACES_1 2>> $LOG_ERRO >> $LOG_REDE && \
        mv $IFACES_2 $IFACES_1 2>> $LOG_ERRO >> $LOG_REDE);

        then
            return 0
        else
            return 1
    fi

}

function DesativaPlacas(){

# Essa funcao desativa todas as placas que estao listadas no arquivo $IFACES_1 (1)
    echo -e "{FONTE}33[01;37m"
    echo -n "Encerrando programas de rede ................................"
    if (\
        /etc/init.d/network-manager stop 2>> $LOG_ERRO >> $LOG_REDE && \
        killall -q wpa_supplicant 2>> $LOG_ERRO >> $LOG_REDE && \
        iwconfig $PLACA key off 2>> $LOG_ERRO >> $LOG_REDE);
        then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
        else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
    fi
    echo -e "\nConfigurando rede $SSID"
    echo
    echo "Desativando interfaces de rede:"
# (1)
    if [ -e $IFACES_1 ];
        then
            cat $IFACES_1 | while read INTERFACE
                do
                    echo -n "--Desativando interfaces de rede $INTERFACE ................."
                    if (\
                        ifconfig $INTERFACE down 2>> $LOG_ERRO >> $LOG_REDE);
                        then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
                        else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]"
                    fi
                done
        else
            echo "Arquivo $IFACES_1, não existe!"
    fi

    echo -n "Finalizando os serviços de rede ............................."
    if(\
        iwconfig $PLACA key off 2>> $LOG_ERRO >> $LOG_REDE && \
        /etc/init.d/networking stop 2>> $LOG_ERRO >> $LOG_REDE);
        then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
        else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
    fi

}

function ConfiguraRede(){

        ProcuraInterfaces
        DesativaPlacas

        echo -n "Processando chave WPA de rede ..............................."
        if (\
            wpa_passphrase $SSID $SENHA > /etc/wpa_supplicant/wpa_supplicant.conf 2>> $LOG_ERRO && \
            wpa_supplicant -i $PLACA -c /etc/wpa_supplicant/wpa_supplicant.conf -B -D wext 2>> $LOG_ERRO);
            then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
            else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
        fi
        echo -n "Configurando ACCESS-POINT na interface $PLACA ................"
        if (\
            iwconfig $PLACA essid $SSID 2>> $LOG_ERRO >> $LOG_REDE && \
            iwconfig $PLACA channel $CANAL 2>> $LOG_ERRO >> $LOG_REDE && \
            iwconfig $PLACA ap $PONTO_DE_ACESSO 2>> $LOG_ERRO >> $LOG_REDE);
            then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
            else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
        fi

        echo -n "Configurando FIREWALL ......................................."
        if (\
            $FIREWALL start 2>> $LOG_ERRO >> $LOG_REDE);
            then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
            else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
        fi

        if [ $IP = 'dhcp' ];
            then
                echo -n "Configurando endereco IP (DHCP) na PLACA $PLACA .............."
                if (\
                    dhclient -r  2>> $LOG_ERRO >> $LOG_REDE && \
                    dhclient $PLACA  2>> $LOG_ERRO >> $LOG_REDE);
                    then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
                    else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
                fi
            else
                if [ $PLACA = '' ] || [ $IP = '' ] || [ $MASCARA = '' ];
                    then
                        echo -e "[{FONTE}33[01;31m Faltam dados de Configuração da Placa (PLACA, IP, MASCARA) {FONTE}33[01;37m]"
                    else
                        echo -n "Configurando endereco IP na PLACA $PLACA ....................."
                        if (\
                            ifconfig $PLACA $IP netmask $MASCARA 2>> $LOG_ERRO >> $LOG_REDE);
                            then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
                            else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
                        fi
                fi

                if [ $GATEWAY != '' ];
                    then
                        echo -n "Configurando GATEWAY ........................................"
                        if (\
                            route add -net default gw $GATEWAY 2>> $LOG_ERRO >> $LOG_REDE);
                            then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
                            else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
                        fi
                fi

                if [ $DNS != '' ];
                    then
                        echo -n "Configurando DNS ............................................"
                        if (\
                            echo "nameserver " $DNS > /etc/resolv.conf 2>> $LOG_ERRO);
                            then echo -e "[{FONTE}33[01;32m  OK  {FONTE}33[01;37m]";
                            else echo -e "[{FONTE}33[01;31m Erro {FONTE}33[01;37m]";
                        fi
                fi
        fi
        echo

}


case $1 in

    trabalho)
        ConfiguraIPTrabalho
        ConfiguraRede
;;

    rede2)
        ConfiguraIP2
        ConfiguraRede
;;
    casa)
        ConfiguraIPCasa
        ConfiguraRede
;;

    *)
    echo "Nenhuma configuracao válida foi selecionada!!"
esac

# Termina de editar o arquivo de LOG
echo -e "\n\n{FONTE}33[01;31m#######################################################{FONTE}33[01;37m\n\n" >> $LOG_ERRO
echo -e "\n\n{FONTE}33[01;31m#######################################################{FONTE}33[01;37m\n\n" >> $LOG_REDE
# Exclui o arquivo que contém a lista das placas de redes
rm -f $IFACES_1 2>> $LOG_ERRO >> $LOG_REDE

Scripts recomendados

Juntando páginas separadas num único PDF

Menu de saída para i3 (versão em Zenity)

Compilador automatizado de kernel Linux (para BSRSoft ServerUX II, Debian, Ubuntu e Debians-like)

Script de instalação do Squid 3 no Slackware

Simulador do MS-DOS


  

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