[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]