Curl
為什麼在管道到更少或更多時無法驗證 curl 請求?
(CentOS 7)
當我嘗試像 curl 這樣的命令
curl -u elastic -X GET 'http://localhost:9200/*' | more
時,我發現在只輸入一個字母后,該命令就像我按下了輸入一樣執行,並且無法進行身份驗證。這是正常的嗎?
我可以重定向到一個文件,或者只是向上滾動,甚至可以使用 wget(還沒有嘗試過),或者甚至將我的密碼輸入到命令中,但我想知道這裡發生了什麼。
問題是
curl
兩者more
都同時從同一個 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 )