題 當不是HTTP 200時,“curl -I”的退出代碼是什麼?


我想檢查HTTP(S)URL返回的HTTP狀態代碼。我不關心內容,所以我只是請求頭   捲曲-I $ url 要么   curl --head $ url

但是我要檢查的退出代碼是什麼,例如在 subprocess.check_call?特別是,我獲得HTTP 403的非零退出代碼?


3
2017-12-18 11:11


起源




答案:


curl -I 永遠都會回來 0,如果它設法用HEAD產生輸出。你有兩種選擇。

首先是使用 curl -I --fail  代替,並檢查退出代碼 22

如果你在Python腳本中這樣做,它可能看起來像:

try:
    subprocess.check_call(['curl', '-I', '--fail', url])
except subprocess.CalledProcessError as e:
    if e.returncode == 22:
        (do something)

第二是 實際上只詢問HTTP狀態代碼, 像這樣:

$ curl -s -I -o /dev/null -w '%{http_code}' $bad-url
403

5
2017-12-18 11:11





如果您真的只想從python腳本獲取HTTP狀態代碼,您可能需要查看“請求”庫:
http://docs.python-requests.org/en/latest/

#Prints status code:
import requests r = requests.get('http://superuser.com') print(r.status_code)


1
2018-05-12 23:33



沒錯,雖然問題只是出於其他原因而捲曲。 - Nemo