curl parou para postar alguma coisa

0

No script dev-netpro.sh abaixo, 'curl' não publica nada se meu $ FWK (ou seja, '8fwk3_dev 2fwk0_dev' - pode ter até 9 palavras) e $ CON (no exemplo, é uma série de dígitos: '72 43 172 28021 8261 14015 325 24 524 ') obter mais de uma palavra

[Expert@WAL-NEW-VSX-02:0]# cat dev-netpro.sh 
#!/bin/bash
while true; do
        FWK=$(top -b -n 1 | egrep 'fwk' |  awk '{print $9 $NF}')
        CON=$(vsx stat -l | egrep 'number' | awk '{print $3}')       
TIME='date +"%T"' 
echo $HOSTNAME, $TIME, $FWK, $CON
echo '{"WAL-VSX-02": "['"$TIME"','"$FWK"','"$CON"']"}'
curl -ik -H "Accept: application/json" -H "Content-type: application/json" -d '{"WAL-VSX-02": "['"$TIME"','"$FWK"','"$CON"']"}' -X POST "https://10.199.107.11:8880/test"  
sleep 2 
done
[Expert@WAL-NEW-VSX-02:0]# 

Veja a saída abaixo:

    [Expert@WAL-NEW-VSX-02:0]# ./dev-netpro.sh 
    WAL-NEW-VSX-02, 12:53:17, 8fwk3_dev 2fwk0_dev, 72 43 172 28021 8261 14015 325 24 524
    {"WAL-VSX-02": "[12:53:17,8fwk3_dev
    2fwk0_dev,72
    43
    172
    28021
    8261
    14015
    325
    24
524]"}

...... nada

    
por irom 03.12.2015 / 19:01

2 respostas

1

O Newline veio desses dois comandos executados no início do script. Depois

FWK=$(echo $FWK|tr -d '\n') CON=$(echo $CON|tr -d '\n')

funcionou! Aprecie muito sua ajuda

    
por 03.12.2015 / 21:54
0

Você precisa de citações em torno desse conteúdo dentro do objeto JSON try e você precisa citar a string inteira para que os espaços dentro das variáveis não façam nada depois que o espaço for tratado como um argumento separado.

echo "{\"WAL-VSX-02\": [\"$TIME\",\"$FWK\",\"$CON\"]}"

A maneira que você tinha antes eram aspas (simples) em torno de vários componentes da string que funcionam, mas se há espaços em qualquer um dos vars, o shell analisa como strings separadas. Desta forma, a coisa toda é citada para que a shell a analise como uma string.

    
por 03.12.2015 / 19:17

Tags