Configuração de rede wireless (WPA)

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

[ Hits: 2.957 ]

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

Menu em bash

Renomeador Automático de Arquivos de Mídia

Script para converter um diretório de arquivos em mp3 para ogg.

Backup simples com log de resultado

Script para carregar e descarregar regras com iptables


  

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