O problema é que curl
e more
estão lendo o mesmo TTY ao mesmo tempo. Além disso, eles provavelmente estão mudando as configurações do TTY; curl
porque a senha que você digita não deve ser mostrada na tela. E more
porque precisa de entrada baseada em caracteres em vez da entrada baseada em linha padrão.
Para evitar que isso aconteça, acho que você só precisa atrasar a inicialização do comando more
até que o comando curl
tenha iniciado a produção. Eu não sei de um comando padrão para fazer isso, mas isso pode ser feito com duas linhas de código Python.
#!/usr/bin/python
import select
select.select([0], [], [])
Com o script Python acima, você pode tentar essa variação do comando original:
curl -u elastic -X GET 'http://localhost:9200/*' | ( ./wait.py ; more )