より少ないまたはより多くのパイピングでカール要求を検証できないのはなぜですか?

より少ないまたはより多くのパイピングでカール要求を検証できないのはなぜですか?

(セントOS 7)

このようなカールコマンドを試してみると、curl -u elastic -X GET 'http://localhost:9200/*' | more1文字だけを入力した後にEnterキーを押したかのようにコマンドが実行され、認証に失敗することがわかりました。

これは普通ですか?

ファイルにリダイレクトしたり、上にスクロールしたり、wgetを使用したり(まだ試していない)コマンドにパスワードを入力したりできますが、ここで何が起こっているのかを知りたいです。

答え1

問題は、curlとがmore同時に同じTTYから読み取ることです。また、すべてTTY設定を変更できます。curl入力したパスワードは画面に表示しないでください。moreこれは基本的な行ベースの入力ではなく文字ベースの入力が必要なためです。

これが発生しないようにするには、コマンドが出力の生成を開始するmoreまでコマンドの開始を遅らせることができると思います。curl私はこれを行う標準コマンドがわかりませんが、2行の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

望むより!

関連情報