shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Configuração de rede + avançada


From: Hever Costa Rocha
Subject: Re: [shell-script] Configuração de rede + avançada
Date: Tue, 25 Oct 2005 22:19:12 -0200

Pergunta idiota:

porque não usa o nameif?

http://www.science.uva.nl/research/air/wiki/LogicalInterfaceNames

É  muito mais seguro simples e limpo...

Estou levando em consideração que na sua empresa nenhum "espírito de porco" irá 
mudar uma placa sem reconfigurar, ou mudar o MAC  de propósito....
O legal do nameif é que você pode renomear as interfaces... tipo fabricio01, 
fabricio02 :-).


  ----- Original Message ----- 
  From: Fabricio Lopes de Souza 
  To: address@hidden ; address@hidden 
  Sent: Tuesday, October 25, 2005 5:14 PM
  Subject: [shell-script] Configuração de rede + avançada


  Ola a todos

  Na minha empresa possui uma politica de instalação para nossa
  aplicação . Uma delas é a de que as placas de rede devem estar
  ordenadas , ou seja , de cima pra baxo ou da esquerda pra direita . (
  exemplo , a primeira de cima pra baixo tem que ser a eth0 , a segunda
  tem que ser a eth1 , e assim por diante )
  Isso é feito para na hora de modificar os cabos nao haver confusão .
  Desenvolvi um script simples que com a ajuda do ifconfig ele pega a
  configuracao inicial ( geralmente nao esta organizada ) e organiza
  ajuda do usuario ...
  Mas percebi que esse script fica mto dependente do ifconfig ... queria
  saber se tem algum jeito de identificar o mac e o modulo da placa
  mesmo que as placas nao estejam "levantadas" , ou de qquer outro jeito
  a nao ser o ifconfig
  tem como ?? :D

  [mandei a mg tanto pra liux-board qnto para a shell-script , por nao
  saber corretamente em que lista esta pergunta se encaixa melhor]

  fixa_mac.sh ( não esta 100% desenvolvido , sugestoes  eu agradeco jah
  que sou newbie em shell :D)

  //------------------------------------------
  #!/bin/bash
  # Fixa Mac :)
  #

  #Variaveis Globais
  null="/dev/null"
  temp="/tmp/fixa_tmp"
  cfg="/etc/sysconfig/network-scripts"
  probe="/etc/modprobe.conf"
  backup="/tmp/fix_mac_backups_$$/"
  i=0

  #Segurança :)
  mkdir "$backup"
  cp -p $cfg/ifcfg-eth* "$backup"
  cp -p "$probe" "$backup"


  # Erros :
  # 107 - Apenas 1 device encontrado
  ERRO_1=107

  # Antes de começar faz backup dos arquivos que serao modificados
  cp -p "$cfg/ifcfg-eth*" "/tmp/" > $null 2>&1
  cp -p $probe "/tmp/" > $null 2>&1

  # Funçãozinha que fixa o MAC na config da placas
  fix_mac()
  {
    echo "---- | O Novo Mac Addr Sera Fixado | ----"
    echo "--------- | ${placas_mac[$placa]} | ---------"
    # Se ja tiver um MAC definido , agente comenta . Tambe definimos
  ONBOOT=yes e BOOTPROTO=static
    sed -e "/^#OLD_HWADDR.*/d" -e 's/^HWADDR/#OLD_HWADDR/' -e
  's/ONBOOT=no/ONBOO=yes/' -e 's/PROTO=[^s]/PROTO=static/'
  $cfg/ifcfg-eth${placa} > $temp
    mv $temp $cfg/ifcfg-eth${placa}
    # Adiciona no fim do arquivo o MAC da placa
    echo "HWADDR="${placas_mac[$placa]} >> ${cfg}/ifcfg-eth${placa}      
  }
  # Função que modifica o nome da placa no modprobe.conf
  fix_name()
  {
  echo ""
  echo "---- | O Novo Nome Sera Fixado | ----"
  echo "--------------| ${placas_name[$placa]} |--------------"
  # Remove a entrada ja existente
  sed /eth${placa}/d $probe > $temp
  mv $temp $probe
  # Adiciona a nova
  echo "alias eth${placa} ${placas_name[$placa]}" >> $probe
  }
  # Assume quantas placas de rede existem , e guarda seus respectivos MAC
  while : ; do
        ifconfig eth${i} >$null 2>$null || break
        echo "-----------------------"
        echo "Placa encontrada : eth${i} "
        
        # Amarra o MAC na no mac[${i}] e o nome no name[${i}]
        eval mac[${i}]="`ifconfig eth${i} | grep HWaddr | cut -d" " -f11 `"
        eval name[${i}]="`grep eth${i} /etc/modprobe.conf | cut -d" " -f3 `"
        
        echo "MAC ADDRESS" : ${mac[$i]}
        echo "Nome do Device " : ${name[$i]}
        echo "-----------------------"
           ((i++))
        done
  echo ""
  echo "-----------------------"
  echo "${i} placa(s) encontrada(s)"
  echo "-----------------------"

        # Se tiver apenas uma placa de rede não tem o que trocar :)
              
  if [[ ${i} -eq 1 ]] ; then
        echo '\\\ERRO : Necessario no minimo 2 placas de rede///'
        echo ""
        echo "Caso as placas de rede estejam fisicamente ligadas
        echo "Voce deve \"subi-las\" (ifup ethX) antes de executar o script "
        echo "(Nao e necessario colocar um ip na placa)"
        exit ${ERRO_1};
        fi

  # Ordena as placas
  echo ""
  echo "Desligue todos os cabos de redes de todas as placas"
  echo "Pressione qualquer tecla para continuar..." ; read -n 1
  echo "---------------------------------------------------"
  placa=0
  resp=0

  for (( j=0 ; j<=i-1 ; j++ )) ; do
        echo "Conecte apenas um cabo de rede na placa de rede numero 
$((placa+1)) "
        echo "Pressione qualquer tecla para continuar ..." ; read -n 1
        echo ""
        echo "----- Testando a placa $((placa+1)) -----"
        for ((k=0 ; k<=i-1 ; k++ )) ; do
              echo "--- Verificando o trafego na eth${k} ---"
              tcpdump -ni eth${k} -c 10 > $null 2>&1 &
              sleep 5
              killall tcpdump 2> $null
              if [[ $? -ne 0 ]] ; then
                    echo ""
                    echo " Encontrado ! "
                    echo ""
                    echo "------------------- Config Atual 
---------------------"
                    echo "Placa $((placa+1)) ----> eth${k} ----> ${mac[$k]} 
----> ${name[$k]}"
                    echo 
"------------------------------------------------------"
                    echo ""
                    # Amarra a placa fisica com seu mac/nome
                    placas_mac[$placa]=${mac[$k]}
                    placas_name[$placa]=${name[$k]}
                    fix_mac
                    fix_name
                    echo ""
                    echo "Placa $((placa+1)) foi configurada com sucesso!"
                    echo ""
                    ((placa++))
                    break
              fi
        done
  done

  #limpa os tmp
  rm -rf $temp
  //---------------------------------------------------------


  ---------------------------------------------------------------------
  Esta lista não admite a abordagem de outras liguagens de programação, como 
perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
aviso.
  ---------------------------------------------------------------------
  Sair da lista: address@hidden
  ---------------------------------------------------------------------
  Esta lista é moderada de acordo com o previsto em 
http://www.listas-discussao.cjb.net
  ---------------------------------------------------------------------



        Yahoo! Grupos, um serviço oferecido por: 
          


------------------------------------------------------------------------------
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/shell-script/
      
    b.. Para sair deste grupo, envie um e-mail para:
    address@hidden
      
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço 
do Yahoo!. 




------------------------------------------------------------------------------


  No virus found in this incoming message.
  Checked by AVG Free Edition.
  Version: 7.1.361 / Virus Database: 267.12.5/149 - Release Date: 25/10/2005


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]