더 적거나 더 많이 파이핑할 때 컬 요청을 검증할 수 없는 이유는 무엇입니까?

더 적거나 더 많이 파이핑할 때 컬 요청을 검증할 수 없는 이유는 무엇입니까?

(센트OS 7)

이와 같은 컬 명령을 시도하면 curl -u elastic -X GET 'http://localhost:9200/*' | more문자 하나만 입력한 후에 마치 Enter 키를 누른 것처럼 명령이 실행되어 인증에 실패하는 것을 발견했습니다.

이게 정상인가요?

파일로 리디렉션하거나 위로 스크롤하거나 wget을 사용하거나(아직 시도하지 않음) 명령에 비밀번호를 입력할 수도 있지만 여기서 무슨 일이 일어나고 있는지 알고 싶습니다.

답변1

문제는 curlmore가 동시에 동일한 TTY에서 읽는다는 것입니다. 또한, 모두 TTY 설정을 변경할 수 있습니다. curl입력한 비밀번호가 화면에 표시되어서는 안 됩니다. more기본 줄 기반 입력 대신 문자 기반 입력이 필요하기 때문입니다 .

이런 일이 발생하지 않도록 하려면 명령이 출력 생성을 시작할 more때까지 명령 시작을 지연하면 된다고 생각합니다 . curl나는 이것을 수행하는 표준 명령을 모르지만 두 줄의 Python 코드로 수행할 수 있습니다.

#!/usr/bin/python
import select
select.select([0], [], [])

위의 Python 스크립트를 사용하여 원래 명령을 다음과 같이 변형해 볼 수 있습니다.

curl -u elastic -X GET 'http://localhost:9200/*' | ( ./wait.py ; more )

답변2

모든

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

노력하다:

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

또 다른 해결책이 있습니다:

# 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

# 

보관도 가능통과chmod 700파일 내부의 변수( 파일을 잊지 마세요 )를 source실행하기 전에 변수를 읽는 데 사용됩니다 curl.

바라보다!

관련 정보