반응형
curl

curl 사용법

패킷/메시지를 네트웍으로 전송하는 유용한 유틸리티입니다. HTTP/S로 GET/POST 등으로 데이터를 전송할 수 있습니다.

  • 설치

  • curl -h 를 하면 옵션이 다 나온다. 너무 많은 내용으로 읽어보기 어렵다. 필요할 때 마다 찾아서 사용하거나 아래 예제를 통해 옵션들을 배워보자.

사용 방법

많이 사용되는 옵션

  • v : 상세로그 보기
  • o : 출력 파일 지정
  • O : 출력 파일명을 자동으로 원격지 파일명과 동일
  • H : 헤더 추가
  • A : 에이전트 추가
  • d : 데이터 추가로 폼 데이터나 JSON 데이터 등을 POST로 보낸다. (단, -G 옵션이 있으면 GET으로 적용된다.)

HTML 받아오기(기본사용)

URL 주소만 뒤에 주면 알아서 받아온다. (GET방식) image

파일 받아오기

URL 주소가 image나 zip 등 바이너리 파일 주소인 경우 텍스트 출력이 아니라 파일로 받아오기. 단순하게 파일 받는 용도로 쓸 거면 wget 유틸리티가 더 편하다.
- URL 뒤에 --output 옵션으로 저장할 파일명을 지정한다. (–output 은 -o 와 같다. 대문자 -O로 하면 뒤에 파일명 지정할 필요가 없다. 원격지 파일명과 동일한 파일명으로 자동으로 생성한다.)

curl https://curl.haxx.se/windows/dl-7.66.0_2/curl-7.66.0_2-win64-mingw.zip -o a.zip
curl https://curl.haxx.se/windows/dl-7.66.0_2/curl-7.66.0_2-win64-mingw.zip -O

HTTP 헤더 보기

$ curl 주소 : 해당 주소의 html content만 출력
$ curl -i 주소 : 해당 주소의 html 헤더와 content를 모두 출력
$ cur -I 주소 : 해당 주소의 html 헤더만 출력 (-I는 --head와 같다)

GET에 추가 정보

헤더 추가
$ curl -H “Host: test.com” -H “name:jun” [주소] : 헤더 정보 추가하기. -H를 여러 번 사용할 수 있다.

User-Agent 추가
$ curl -A “Mozilla/5.0” [주소] : -A 뒤에 지정.
일반적으로 에이전트를 식별하거나 브라우져인척 가장하기 위해 사용한다.

URL 파라미터 추가
$ curl [주소]?key=value&key=value… : URL뒤에 파라미터를 지정.
$ curl -G [주소] -d “key=value&key=value” : -d 옵션은 POST DATA로 지정하는데, -G 옵션을 주면 GET방식 파라미터로 변한다.
$ curl -G [주소] -d “key=value” -d “key=value” : -d 옵션을 나눌 수도 있다.
즉, 위와 같이 입력하면 자동으로 [주소]?key=value&key=value 이런식으로 변환되어 GET으로 요청된다.

POST 사용하기

데이터추가
$ curl -X POST [주소] -d “데이터” : -X POST 옵션은 생략가능 (content-type 지정이 없으면 application/x-www-form-urlencoded 타입으로 보낸다.)

FORM 데이터 추가
HTML의 FORM에 name으로 지정된 부분에 값을 채워서 POST할 경우 사용한다. name을 key로 하여 아래처럼 값을 채워 보낸다.
$ curl -X POST [주소] -d “key=value&key=value&…” : (-X POST는 생략 가능. -d는 --data와 같다)
$ curl -X POST [주소] -d “key=value” -d “key=value” : (상동)
$ curl [주소] --data-urlencode ‘msg=한글’ --data-urlencode ‘name=kkk’ : url인코딩 변환 후 보낸다.

JSON으로 보내기
$ curl -H ‘Content-Type: application/json’ -X POST [주소] -d ‘{“id”:“abc”, “pwd”:“def”}’
$ curl -H “Content-Type: application/json” http://localhost:18899/sum -d “{\“a\”:10,\“b\”:20}”

DOS 커맨드에서는 데이터를 "로 감싸고 내부에 "가 있으면 \를 앞에 추가해 줘야 한다. Linux에서는 바깥을 '로 감싸면 된다. -d 옵션이면 POST로 가기 때문에 별도로 -X 옵션은 필요없다.

그 외 방법으로 사용하기

DELETE로 요청하기
$ curl -X DELETE -G [주소] -d key=value -d key=value
HTTP 인증
$ curl -v -u ID:PASSWORD [주소]

리눅스에서 웹서버 정상 체크 스크립트

#!/bin/bash

if [ "$#" -lt 1 ]; then
    echo "Usage: $0 [URL]"
    exit 1
fi

SVR=$1
RES=$(curl -L -s -o /dev/null -w "%{http_code}" ${SVR})

if [ ${RES} -ne 200 ];then
    echo "${SVR} fail: ${RES}"
    exit ${RES}
fi;

Author: crazyj7@gmail.com
Written with StackEdit.

+ Recent posts