cURL 억제 응답 본문


110

응답 본문의 출력을 억제하도록 cURL에 지시 할 수 있습니까?

제 경우에는 응답 본문이 HTML 페이지이므로 CLI 버퍼가 오버플로되어 관련 정보를 찾기가 어렵습니다. HTTP 응답 코드, 헤더 등과 같은 출력의 다른 부분- 실제 HTML을 제외한 모든 부분을 검사하고 싶습니다 .

답변:


117

-o스위치와 null의사 파일을 사용할 수 있습니다 .

유닉스

curl -s -o /dev/null -v http://google.com

윈도우

curl -s -o nul -v http://google.com

1
... Unix를 사용하는 경우 ;-) Windows의 경우 nul을 사용할 수 있습니다. 다음은 문서에 대한 링크입니다. BaltoStar는 다음에 질문하기 전에 읽을 충동을 느낍니다 ;-) curl.haxx.se/docs/manpage.html
Marged

3
아니에요. 하지만 "NUL"이다, "널 (null)"는 그 이름의 파일이 생성됩니다
Marged

1
사실 내가 게시하기 전에 매뉴얼 페이지를 읽고 시도 않았다 -s -o nul그러나 나의 창에 컴퓨터 curl -s -o nul -v http://{internal-host}/{internal-uri}출력 페이지의 전체 HTML은 - 나는 시도 curl -s -o nul -v http://google.com하고 이것이 내 내부 사이트에 대한 작업을하지 않는 이유를 내가 이해하지 못하는거야, 그래서, 예상대로 억제 출력을한다
BaltoStar

-o하나 개의 URL을 출력 지정 : 여러 URL에있는 경우에만 :( 처음 폐기합니다
사이먼 버컨

1
비 이식성 NUL/dev/null. 사용 -sIXGET하는 것이 더 나은 옵션 IMO입니다.
binki

45

여기에 모든 curl 출력과 헤더를 억제하는 방법이 있습니다. 오류가 발생해도 여전히 표시하는 옵션이 있습니다. 크론 작업 또는 자동화 된 테스트에 유용합니다.

유닉스

모든 출력을 억제하려면 :

curl --silent --output /dev/null http://example.com

출력을 억제하지만 오류가 발생할 경우 계속 표시하려면 다음을 수행하십시오.

curl --silent --output /dev/null --show-error --fail http://example.com

윈도우

모든 출력을 억제하려면 :

curl --silent --output nul http://example.com

출력을 억제하지만 오류가 발생할 경우 계속 표시하려면 다음을 수행하십시오.

curl --silent --output nul --show-error --fail http://example.com

설명 된 매개 변수

--silent다운로드 진행중인 통계를 억제합니다 (그러나 여전히 HTML 출력을 표시 함) 모드가 활성화 된 경우에도
--output /dev/null성공적인 출력
--show-error표시 오류를 숨 깁니다. HTTP 응답이 단순히 DNS / 대신 오류 코드 (404, 500 등)이면 오류가 발생합니다. TCP 오류.silent
--fail


업데이트 : 원래 작성자가 모든 것을 침묵시키기보다는 요청의 헤더와 응답 코드를 검사하고 싶었다는 것을 알고 있습니다. 이를 수행하는 방법에 대한 자세한 내용 은 samael의 답변 을 참조하십시오 .


2
비 이식성 NUL/dev/null. 사용 -sIXGET하는 것이 더 나은 옵션 IMO입니다.
binki

1
@binki 댓글에 감사드립니다-그들은 실제로 다른 일을합니다. 또한 OP는 내 솔루션에 표시되지 않는 헤더를 검사하고 싶었습니다. 나는 그것을 반영하기 위해 내 대답을 업데이트했습니다.
Simon East

1
나는 OP의 게시물을 다시 읽기에 그들이 말하지 않았다 추측 헤더를보고 싶었다. 그들은 실제로 curl -vo/dev/null/ curl -voNUL…를 찾고 있었을 것입니다 . 그리고 그것의 휴대용 변형이 있는지 모르겠습니다. hrm… ;-).
binki

--fail에 대한 짧은 명령이 있습니까? 나는 -sS 우리가 모두 --silent 및 --show-오류를 위해 필요하다고 생각
Freedo

예, 있습니다 : curl -Ssfo /dev/null url. 그러나 미래의 관리자에게 친절하십시오.
Amit Naidu

29

헤더를 표시하지만 응답 본문을 숨기려면 다음을 사용하는 것이 좋습니다.

curl -sIXGET http://somedomain.com/your/url

나는 curl -I http://somedomain.com/your/url응답 헤더를 보여주는 데 사용 했습니다. 하지만 문제는 요청 에만 응답하는 API 호출을 테스트하려는 경우 좋지 않은 HEAD메서드 를 사용하여 요청을한다는 것 GET입니다. 이것이의 목적이며 -X GET요청을 GET.

요약하면 다음과 같습니다.

-s가죽 진행 출력에서 바 (다른 프로그램으로 배관 때 특히 유용)
-I방송 헤더 (그러나이 만드는 HEAD요청)
-XGET변환이 다시 요청 GET요청

참조 : http://www.woolie.co.uk/article/curl-full-get-request-dropping-body/


2
정말 복잡합니다. curl -i똑같은 일을합니다.
bfontaine

4
아니요, -i출력과 본문에 HTTP 헤더를 포함합니다. 시도 해봐. curl -i http://google.com로 동일하지 않습니다curl -IXGET http://google.com
사마엘

내 목적 (및 OP) curl -I url으로 충분하고 동일한 효과가 있습니다. URL이 반응하는지 확인해야했습니다. 이 질문 역시 단순히 신체를 억압하는 것에 관한 것이 었 HEAD습니다.
Amit Naidu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.