Estou tentando trabalhar com o comando expect, tudo funciona bem até tentar canalizar os resultados de um comando para um arquivo Gzip. Aqui está o trecho do arquivo bash:
XYZ=$(expect -c "
spawn python log-connector.py -s $strt -e $end -i 600 -a https://server:9000 -u someaccount -f ./conf/firewall-fields2.txt -q ./conf/query.txt -z | gzip >> /data/sources/results-$strt2-$end2.json.gz
expect \"Password:\"
send \"$pass\r\"
interact
")
echo "$XYZ"
$start
- variável (data inicial)
$end
- variável (data final)
$strt2
- variável (data inicial com 00:00)
$end2
- variável (data final com 23:59)
$pass
- Senha inserida pelo usuário anteriormente.
Se eu remover
| gzip >> /data/sources/results-$strt2-$end2.json.gz
a partir do acima, funciona como esperado. Quando eu adiciono, recebo o seguinte erro:
send: spawn id exp7 not open
while executing
usage: API [-h] [-s START] [-e END] [-d DAY] [-i INTERVAL]
[-a LOGGER] [-l LOGFILE] [-f FIELDS] [-q QUERY]
[-o OUTPUT] [-t FORMAT] [-u USER] [-p PASS] [-z]
API: error: unrecognized arguments: | gzip >> /data/sources/results-20180604-20180604.json.gz
Você pode querer usar um shell para interpretar o pipe e o redirecionamento: usarei um heredoc para facilitar a citação