Por que não posso autenticar uma solicitação de curvatura ao canalizar para menos ou mais?

0

(CentOS 7)

Quando eu tento um comando curl como curl -u elastic -X GET 'http://localhost:9200/*' | more , acho que depois de digitar apenas uma única letra, o comando é executado como se eu tivesse pressionado enter e não autenticasse.

Isso é normal?

Eu posso redirecionar para um arquivo, ou simplesmente rolar para cima, talvez até mesmo usar o wget (não tentei), ou até colocar minha senha no comando, mas eu gostaria de saber o que está acontecendo aqui.

    
por spanishgum 26.09.2017 / 23:19

2 respostas

3

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 )
    
por 02.10.2017 / 00:17
0

por

# curl --help | grep -- ' -u'
 -u, --user USER[:PASSWORD]  Server user and password
# 

tente:

curl --silent --user elastic:changeme --request GET localhost:9200/*?pretty | more

ainda outra solução:

# pass=changeme
# curl -I -u alexus:$pass https://X.X.X
HTTP/1.1 200 OK
Server: nginx/1.13.5
Date: Wed, 27 Sep 2017 17:27:19 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 2350
Connection: keep-alive
Accept-Ranges: bytes
Cache-Control: max-age=31536000
Last-Modified: Sun, 13 Aug 2017 18:21:51 GMT
Strict-Transport-Security: max-age=15768000

# 

também é possível armazenar a variável pass dentro de um arquivo (não esqueça de chmod 700 desse arquivo) e usar source para ler a variável antes de executar curl .

voila!

    
por 26.09.2017 / 23:48

Tags