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
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
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
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.