Re: Ajuda com Shell Script Avançado - Alguem se atreve.
gunix escreveu:
Preciso criar um script que faça +- isso
Alguem pode me ajudar?
Vou ter uma variavel chamada
IF="eth0 eth1 eth2"
e vou ter varios parametros
eth0_IP=10.1.0.1 <http://10.1.0.1>
eth1_IP=100.100.100.1 <http://100.100.100.1>
...
vou jogar isso num for para ler a variavel IF e ao entrar ele tenta os ip.
Um exemplo do que quero é:
for i in $IF; do
ifconfig $i $i_IP netmask $i_MASK broadcast $i_BCAST up
done
preciso concatenar estas a variavem $IF com o _IP para que eu
obtenha o resultado de $eth0_IP como faço isso?
Alguem pode me ajudar.
Parece uma loucura, maso que preciso fazer é uma rotina que vai ler
diversos valores que alteram somente o inicial
O Acima foi so um exmplo de que preciso.
A raciocinio é igual
Fui bem claro?
Algeum pode me ajudar?
Quando tento concaternar
echo $$IF ele da problema.
Olá,
Não entendi muito bem, mas pode fazer assim:
ETH[0 * 3 + 0] = "1.1.1.1" # IP da eth0
ETH[0 * 3 + 1] = "255.255.255.0" # MASK da eth0
ETH[0 * 3 + 2] = "1.1.1.255" # BCAST da eth0
ETH[1 * 3 + 0] = "1.1.1.2" # IP da eth1
ETH[1 * 3 + 1] = "255.255.255.0" # MASK da eth1
ETH[1 * 3 + 2] = "1.1.1.255" # BCAST da eth1
. . .
MAX_ETH=((${#ETH[@]} / 3))
for ((i=0; i < MAX_ETH; i++)))); do
ifconfig ${ETH[i * 3 + 0]} netmask ${ETH[i * 3 + 1]} broadcast
${ETH[i * 3 + 2]} up
done
Onde o primeiro número entre colchetes é o da eth e o último é 0=IP,
1=MASK e 2=BCAST. O "* 3 +" é para "emular" duas dimensões em Bash.
Se ainda insistir no seu método, tente:
for i in $IF; do
IP="`eval "echo \$$i_IP"`"
MASK="`eval "echo \$$i_MASK"`"
BCAST="`eval "echo \$$i_BCAST"`"
ifconfig $i $IP netmask $MASK broadcast $BCAST up
done
[]'s
Junior Polegato
Reply to: