Usando NC em For Loop para iterar através de uma matriz com endereços IP - erro de sintaxe: operador aritmético inválido

1

Estou trabalhando para criar um script Bash para o meu trabalho que percorre uma matriz de endereços IP e usa o NC para procurar portas abertas em cada um desses endereços IP. Se eu fosse usar o comando NC sozinho e digitar manualmente o comando para cada endereço IP, ele funcionará, mas não é uma boa maneira de fazer isso. No entanto, me deparo com um erro quando uso uma matriz com todos os endereços IP nela. Aqui está um exemplo do meu código (usando endereços IP do Google e da Microsoft para exemplos e privacidade):

#!/bin/bash
IP_Addresses=(
172.217.6.142
191.239.213.197
)
FILE_Name=(
"google"
"microsoft"
)
for i in "${IP_Addresses[@]}"
do
    nc -w2 -zv4 ${IP_Addresses[@]} 1-100 > "${FILE_Name[$i]}".log 2>&1
done

O erro que recebo deste exemplo (que é semelhante ao exemplo que recebo do script atual) é o seguinte:

./testPorts.sh: line 14: 172.217.6.142: syntax error: invalid arithmetic operator (error token is ".217.6.142")
./testPorts.sh: line 14: 191.239.213.197: syntax error: invalid arithmetic operator (error token is ".239.213.197")

Eu coloquei o código em um arquivo chamado testPorts.sh, tornei-o executável e o executei a partir do terminal. E isso é o que eu tenho. A linha 14 é a linha com o comando NC. Alguém sabe o que estou fazendo de errado aqui e, em caso afirmativo, como consertá-lo?

Eu tentei colocar os endereços IP entre aspas, mas com o mesmo erro. Se os endereços IP na matriz forem encapsulados e / ou a variável ${IP_Addresses[@]} estiver encapsulada, recebo o mesmo erro.

    
por Christian Sirolli 24.03.2018 / 01:25

1 resposta

1

Você parece querer iterar sobre os índices dos dois arrays - o que você pode fazer usando indireto

#!/bin/bash
IP_Addresses=(
172.217.6.142
191.239.213.197
)
FILE_Name=(
"google"
"microsoft"
)
for i in "${!IP_Addresses[@]}"
do
    nc -w2 -zv4  "${IP_Addresses[$i]}" 1-100 > "${FILE_Name[$i]}".log 2>&1
done

Também seja consistente com os nomes das variáveis ( FILE_Name versus FILE_NAME ) e ganhe o hábito de citar as expansões de variáveis.

    
por steeldriver 24.03.2018 / 01:49