Подтвердить что ты не робот

Получить выход на страницу с помощью curl -fail

Вызов curl без параметров, я получаю вывод страницы, даже с кодом http status = 404:

$ curl http://www.google.com/linux;
<!DOCTYPE html>
<html lang=en>
  <meta charset=utf-8>
  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">
  <title>Error 404 (Not Found)!!1</title>
  <style>
    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/errors/logo_sm_2.png) no-repeat}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/errors/logo_sm_2_hr.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/errors/logo_sm_2_hr.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/errors/logo_sm_2_hr.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:55px;width:150px}
  </style>
  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>
  <p><b>404.</b> <ins>That’s an error.</ins>
  <p>The requested URL <code>/linux</code> was not found on this server.  <ins>That’s all we know.</ins>

$ echo $?;
0

Код состояния равен 0.

При вызове с --fail не будет выводиться вывод:

$ curl --fail http://www.google.com/linux;
curl: (22) The requested URL returned error: 404 Not Found

$ echo $?;
22

Код статуса 22 теперь...

Id ', как получить вывод, даже когда http status = 404, 500 (как и первое выполнение завитка) и, в то же время, получить другую системную ошибку (например, во втором выполнении curl, $? = 22), Это возможно с завитом? Если нет, то как я могу достичь этого с помощью другого инструмента (этот инструмент должен принимать файлы, загружающие данные e post! Wget, похоже, не является альтернативой...)

Спасибо.

4b9b3361

Ответ 1

В первую очередь максимальное значение для кода ошибки (или кода выхода) составляет 255. Вот ссылка .

Кроме того, --fail не позволит вам выполнять то, что вы ищете. Однако вы можете использовать альтернативные способы (написание оболочки script) для обработки сценария, но не уверены, что это будет эффективно или не для вас!

http_code=$(curl -s -o out.html -w '%{http_code}'  http://www.google.com/linux;)

if [[ $http_code -eq 200 ]]; then
    exit 0
fi

## decide which status you want to return for 404 or 500
exit  204

Теперь сделайте $?, и вы получите код выхода отсюда.

Вы найдете ответ html внутри файла out.html.

Вы также можете передать url в аргумент командной строки script. Проверьте здесь.

Ответ 2

К сожалению, невозможно с завивкой. Но вы можете сделать это с помощью wget.

$ wget --content-on-error -qO- http://httpbin.org/status/418

    -=[ teapot ]=-

       _...._
     .'  _ _ `.
    | ."` ^ `". _,
    \_;`"---"`|//
      |       ;/
      \_     _/
        `"""`
$ echo $?
8