Você entende a sintaxe simples?
while IFS=',' read -r UUID protocol username passwd ip_address
do
curl_call="${protocol}://${username}:${passwd}@${ip_address}/report"
echo $curl_call
done < test_data.txt
Eu tenho um arquivo de texto com esta aparência:
b4238ca2-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress
b4238f0e-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress
b4239058-cb8d-11e4-8731-1681e6b88ec1,https,username,password,ipaddress
OBSERVAÇÃO: o nome de usuário, a senha e o endereço IP foram todos alterados, para não expor informações confidenciais, eles são reais no meu arquivo de texto que estou usando.
Eu escrevi o seguinte script bash para ler linha por linha e colocar cada item em uma matriz. Anteriormente isso funcionava, no entanto, agora ele está dentro de uma substituição de processo, não está mais funcionando. Estou assumindo que isso tem a ver com o modo como estou acessando os elementos da matriz, mas não tenho certeza do que está errado. Snippet abaixo:
i=0
declare -a devices
while read line
do
devices[i]=$line
((i++))
done < test_data.txt
timestamp=$(date +"%s")
echo "${devices[@]}"
IFS=","
declare -a devarr
for device in "${devices[@]}"
do
devarr=($device)
read dateStrNew dateStrOld < <(curl -k -q "${devarr[1]}://${devarr[2]}:${devarr[3]}@${devarr[4]}/camerainfo" | html2text | gawk '/Newest Sequence/ { new=$3" "$4 }/Oldest Sequence/ {old=$3" "$4}END {OFS=","; print new,old }')
Além disso, eu tentei o seguinte com base em um combo de algum código alternativo que foi sugerido para uma pergunta anterior, junto com algum outro código que eu encontrei enquanto pesquisava, mas também não funciona. No entanto, simplificaria massivamente as coisas se isso acontecesse. Isso poderia funcionar e é uma solução melhor?
while read -u 3 line
do
read UUID protocol username passwd ip_address
curl_call="${protocol}://${ip_address}:${username}@${passwd}/report"
echo $curl_call
read dateStrNew dateStrOld < <(curl -k -q "$curl_call" | html2text | gawk'/Newest Sequence/ { new=$3" "$4 }/Oldest Sequence/ {old=$3" "$4}END {OFS=",";print new,old }')
done 3< test_data.txt
Qualquer ajuda muito apreciada, como vai ser uma longa noite independentemente! Obrigado!
Você entende a sintaxe simples?
while IFS=',' read -r UUID protocol username passwd ip_address
do
curl_call="${protocol}://${username}:${passwd}@${ip_address}/report"
echo $curl_call
done < test_data.txt
Tags bash input curl file-descriptors array