Каков код выхода для "curl-I", когда не HTTP 200?

Я хочу проверить, какой код состояния HTTP возвращается для URL HTTP(S). Я не забочусь о содержании, поэтому я просто прошу голову
curl-I $ url
или
curl --head $url

а какой код выхода я должен проверить, например, в подпроцесс.check_call? В частности, я получаю ненулевой код выхода для HTTP 403?

3
задан Nemo
28.11.2022 6:31 Количество просмотров материала 2900
Распечатать страницу

2 ответа

curl -I всегда будет возвращать 0, если оно управлял произвести выход с головой. У вас есть два варианта.

первый заключается в использовании 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
отвечен Nemo 2022-11-29 14:19

Если вы действительно просто хотите коды состояния HTTP из скрипта python, вы можете проверить библиотеку " запросы:

http://docs.python-requests.org/en/latest/

#Prints status code:

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

1
отвечен Tristan Reid 2022-11-29 16:36

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх