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

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: