wget처럼 curl 툴도 다양한 기능을 제공하는데 최근에는 wget보다 널리 쓰이고 더 유용한 기능을 제공하는 것같아 정리해본다.
wget의 은 JDK를 다운로드 받기위해 정리해놓은 문서를 참조 : http://story.cosmossoftwareresearchers.com/search/wget
사용예(Example, Sample)
HTTP/HTTPS Download
HTTP로 다운로드
이어받기
-C/--continue-at <offset> 옵션을 주면 이어받기 가능(offset 에 - 를 주면 전송이후 부분부터 이어받음)
특정일 이전/이후 변경되었으면 받기
-z/--time-cond <time>
HTTP 헤더에 If-Modified-Since: 헤더를 추가하여 특정일 이후에 변경되었으면 다운로드 수행
아래 예제는 2011년 12월 21일 이후에 변경되었으면 다운로드 수행
날자앞에 - 를 추가하면 If-Unmodified-Since: 헤더를 추가하여 특정일 이전에 변경되었으면 다운로드 수행
아래 예제는 2011년 12월 21일 이전에 변경되었으면 다운로드함 (날자에 - 추가)
http response code 만 출력
HTTP Header 나 contents 는 빼고 HTTP Response code 만 출력한다. 서버의 정상 작동 여부 점검때 유용하다.
HTTP 인증
id/pwd 가 필요한 사이트의 경우 -u(–user) 옵션 뒤에 userid:password 를 지정하여 인증할 수 있다.
결과값에 HTTP Header 포함
-i 옵션을 사용하면 서버의 응답에 서버가 보낸 HTTP 헤더를 추가하여 출력한다. 디버깅에 유용한다.
HTTP/HTTPS POST
HTTP FORM POST
-X POST 옵션을 추가하거나 -d( --data) 옵션을 지정하면 기본값으로 POST 로 설정됨
POST 데이타는 "param1=value1¶m2=value2" 형식으로 전달
데이타에 공백이나 기타 특수 문자가 있을 경우 URL encoding 을 해야 한다.
공백일 경우 일일이 + 로 변환해서 전송해야 하지만 최신 버전의 curl(7.18.0 이후) 은 FORM 파라미터를 URL Encoding 해주는 --data-urlencode 옵션을 사용하면 별도로 인코딩을 해주지 않아도 된다.
Hidden field 전송시 일반 필드처럼 name=value 형식으로 전송하면 된다.
HTTP POST File
file POST할 경우 file name 앞에 @ 를 붙여줌
HTTP POST Binary File
curl 은 POST 시 데이타를 text 로 취급하므로 binary 데이타는 깨질 수 있다. 제대로 전송하려면 --data-binary 옵션을 추가해야 한다.
HTTP File Upload Form
다음과 같은 파일 업로드 FORM 이 있을때
localfilename 은 upload 할 파일명, submit 은 press=OK
HTTP Header 설정
특정한 HTTP Header 를 설정해서 보내야 할 경우(Ex: json data등) -H (–header) 옵션으로 헤더를 설정할 수 있다.
Content-Type Header 설정
User-Agent 설정
특정 브라우저인(Browser) 것처럼 동작하기 위해서는 -A ( --user-agent) 옵션을 사용할 수 있다. (http://www.useragentstring.com/)
USER-AGENT CHROME 24.0
USER-AGENT MSIE(INTERNET EXPLORER) 10.0
USER-AGENT FIREFOX 29.0
Referer 설정
Referer 를 체크하는 사이트일 경우 -e (–referer) 옵션으로 Referer URL 을 설정할 수 있다.
아니면 -H 옵션으로 referer 헤더를 지정해도 된다.
SSL/TLS 옵션
TLS Version 지정
SSL 의 후속 버전인 TLS 의 버전을 지정할 수 있다. 지정하지 않을 경우 서버와 negotiation하여 결정한다.
- -1, --tlsv1 Use => TLSv1 (SSL)
- --tlsv1.0 Use TLSv1.0 (SSL)
- --tlsv1.1 Use TLSv1.1 (SSL)
- --tlsv1.2 Use TLSv1.2 (SSL)
SSL Version 지정
다음 옵션으로 사용할 SSL 의 버전을 지정할 수 있다. 지정하지 않을 경우 서버와 negotiation하여 결정한다. SSL 은 오래 됐으니 SSL 보다는 TLS 를 사용하는게 좋다.
- -2, --sslv2 Use SSLv2 (SSL)
- -3, --sslv3 Use SSLv3 (SSL)
REST API 와 연계
위의 옵션들이 익숙해졌으면 REST 기반의 웹서비스를 개발할 때 curl 을 이용해서 테스트 및 디버깅을 수행할 수 있다. REST API 를 제공하는 유명한 Web App 와 연계하는 방법을 정리해 본다.
curl로 Atlassian JIRA REST API 연계하기
Sonatype nexus Admin API
관리자 암호 변경
'DevOps' 카테고리의 다른 글
AWS S3를 통한 Static webservice hosting 설정 (0) | 2016.08.31 |
---|---|
DevOps란 | DevOps 정의 (0) | 2016.04.28 |
DevOps관련 멜번에서의 Hot한 이슈들... (0) | 2016.02.19 |
GitHub에 Windows SSH key 등록 (0) | 2016.02.19 |
도커(Docker)개념 잡기 (0) | 2016.02.18 |