Menu

문서정보

웹 서버에 대한 배치작업이 필요한 경우가 있다. 이런 작업에 웹 브라우저를 사용할 수 없는 노릇이니 CLI 도구를 사용해야 한다. curl은 가장 널리 사용하는 인터넷 데이터 전송을 위한 도구다.

CURL 예제

프로토콜 디버깅

verbose와 trace, --trace-ascii를 이용해서 HTTP 데이터 통신 과정에 대한 상세정보를 얻을 수 있다. verbose로 불충분하다면 trace-ascii를 사용하자.
# curl --trace-ascii debug.dump http://www.test.co.kr/testpage
디버깅 정보는 debug.dump에 저장된다.

GET

데이터 요청을 위한 가장간단한 방법이다. URL만 명시하는 것으로 테스트 할 수 있다.
# curl http://www.joinc.co.kr
# curl http://www.joinc.co.kr?action=del&id=12345

POST

GET 방식은 URL만으로 정보를 보낼 수 있지만, POST 방식의 경우 메시지를 body에 담아서 보내야 한다. -d, --data 옵션을 이용해서 데이터를 보낼 수 있다. 혹은 파일의 내용을 POST 데이터로 보낼 수도 있다.
# curl -d "name=yundream&age=19&address=Seoul ... ..." http://www.joinc.co.kr/curltest.php
# curl -X POST http://192.168.57.3:5984/mywiki/ -d @curl.json -H "Content-Type: application/json"

파일 업로드

# curl -F upload=@dump.tar.gz -F "username=yundream" http://www.joinc.co.kr/curltest.php

User Agent

반응형 웹 페이지를 만들 경우 user-agent에 따른 테스트가 필요하다. --user-agent 옵션을 이용해서 user agent 값을 변경할 수 있다.
#  curl --user-agent "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" http://www.joinc.co.kr 

HTTP Header dump

"-D(--dump-header) <filename>"로 헤더 정보를 파일로 보낼 수 있다. filename을 "-"로 하면 헤더를 표준출력할 수 있다.
# curl -D header.txt http://www.joinc.co.kr
# cat header.txt
HTTP/1.1 200 OK
Date: Thu, 04 Jul 2013 01:54:40 GMT
Server: Apache/2.2.14 (Ubuntu)
Last-Modified: Fri, 22 Jun 2012 06:58:22 GMT
ETag: "c43e-76-4c30a286a7f80"
Accept-Ranges: bytes
Content-Length: 118
Vary: Accept-Encoding
Content-Type: text/html

참고