사용자 도구

사이트 도구


linux:curl

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
linux:curl [2019/05/31 13:19]
kwon37xi
linux:curl [2022/06/15 15:44] (현재)
kwon37xi [retry]
줄 1: 줄 1:
 ====== Curl ====== ====== Curl ======
 +  * https://curl.se/
 +  * https://curl.se/docs/manpage.html
 +
  
 ===== 기본옵션 ===== ===== 기본옵션 =====
줄 5: 줄 8:
   * ''$HOME/.curlrc'' 파일에 기본 옵션들을 지정해 둘 수 있다.   * ''$HOME/.curlrc'' 파일에 기본 옵션들을 지정해 둘 수 있다.
   * ''-o [FILENAME]'' 응답 결과를 파일로 저장한다.   * ''-o [FILENAME]'' 응답 결과를 파일로 저장한다.
 +  * ''-s''/''%%--silent%%'' : 본문 외의 다른 메시지는 찍지 말 것.
 +  * ''-L'' : redirect 따라가기
 +  * ''-f''/''%%--fail%%'' : fail silently
 +  * ''-S'' : ''-s''와 함께 사용시, 에러 발생시 에러보여주기
 +
 +===== 순수하게 컨텐츠만 받기 =====
 +  * curl 컨텐츠만 순수하게 받고, 그 내용에 pipeline 을 수행하려면 아래 옵션을 하는게 좋다.
 +<code sh>
 +curl -fsSL "<url>"
 +</code>
  
 ===== 인증 ===== ===== 인증 =====
줄 12: 줄 25:
  
 ''name:password'' 에 특수 문자가 들어갈 경우 홑따옴표로 감싸면 된다. ''name:password'' 에 특수 문자가 들어갈 경우 홑따옴표로 감싸면 된다.
 +
  
 ===== method ===== ===== method =====
줄 43: 줄 57:
 curl --user myusername:mypassword http://... curl --user myusername:mypassword http://...
 </code> </code>
 +
 +===== json =====
 +  * [[https://daniel.haxx.se/blog/2022/02/02/curl-dash-dash-json/|curl dash-dash-json | daniel.haxx.se]]
 +  * ''7.82'' 버전부터 ''%%--json%%'' 옵션 생김
 +<code>
 +# --json 은 아래와 동일한 옵션이다.
 +--data [arg]
 +--header "Content-Type: application/json"
 +--header "Accept: application/json"
 +</code>
 +
 +<code sh>
 +# 기본 사용법
 +curl --json '{"tool": "curl"}' https://example.com/
 +
 +# json 파일 지정
 +curl --json @json.txt https://example.com/
 +
 +# stdin
 +echo '{"a":"b"}' | curl --json @- https://example.com/
 +</code>
 +
 +  * [[linux:jo|jo]], [[linux:jq|jq - json query]] 등과 함께 사용가능.
 +
 +<code sh>
 +jo name=daniel tool=curl | curl --json @- https://httpbin.org/post | jq
 +</code>
 +
 +===== tiemout =====
 +  * ''%%--connect-timeout 3.14%%'' : connection timeout 초. fractional
 +  * ''%%--max-time 2.92%%'' : 전송 시간 제한 초. fractional. 아마도 read-timeout 같은 역할인듯보임.
 +
 +===== retry =====
 +  * [[https://stackoverflow.com/questions/42873285/curl-retry-mechanism|rest - Curl retry mechanism - Stack Overflow]]
 +  * ''%%--max-time 10%%'' : 각 retry 가 기다릴 시간 초.
 +  * ''%%--retry 5%%'' : 재시도 횟수 최대 5회
 +  * ''%%--retry-delay 3%%'' : 재시도 마다 주어질 delay 초
 +
 +===== OpenSSL 인증서 실패 =====
 +갑자기 아래와 같은 오류가 발생했는데, 이는 curl이나 운영체제의 문제가 아니라 당시 접속하고 있던 해당 WiFi 망의 라위터가 인증서를 조작한 것으로 보인다.
 +
 +<code>
 +OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 
 +</code>
 +
 +혹은 http_proxy, https_proxy 같은 환경 변수 설정의 proxy 서버에서 인증서를 변조할 수도 있다.
 +
 +이로인해, curl 뿐만 아니라 웹 브라우저에서도 올바로 접속이 안됐다.
 +
 +망이나 프록시 서버를 바꿔서 접속하니까 잘 됐다.
 +
  
linux/curl.1559276397.txt.gz · 마지막으로 수정됨: 2019/05/31 13:19 저자 kwon37xi