DevOps/Linux

[Linux] 웹사이트 동작 체크 명령어는?

Henu 2022. 4. 10. 23:39

제목을 보고 ping 이라고 생각했다면..?!

 

 

curl을 사용해 보았나요?
어떤 상황에서 어떤 옵션들을 사용해 보았나요?

 


cURL

curl은 CLI 기반의 웹 요청 도구이다.

Linux, MacOS, Windows 등의 대부분의 OS에서 사용 가능하며, HTTP, HTTPS, FTP, TELNET, SMTP, IMAP, POP3등의 프로토콜과 소켓 통신까지 지원한다.

 

 

포맷

curl [option] <url>

 

한 번 curl https://www.google.com 을 실행해 보자.

아마 자바스크립트 코드와 바이너리 코드들로 터미널이 꽉 찰 것이다.

curl 은 기본적으로 GET 방식으로 url을 호출한다.

 

curl 요청에 임의의 header를 넣을 수 있고, JSON 형식의 데이터도 넣어서 보낼 수 있다.

 

 

다양한 옵션

옵션의 순서는 중요하지 않음!

 

curl -v

 

curl 요청에 들어가는 자세한 옵션을 출력해준다.

  • google.com의 IP주소를 알 수 있다. (216.58.220.110)

  • 내가 보낸 request의 프로토콜(HTTP/1.1)과 형식을 알 수 있다.(GET)

  • request에 입력된 다양한 header들을 볼 수있다.

 

https로 요청을 보내면 TLS handshake과정도 볼 수 있다.

 

인증서의 기간, 적용 도메인등을 모두 확인할 수 있다.

구글은 인증서 적용 기간이 매우 짧음을 알게 된다.

 

위 터미널에 나오는 handshake 과정을 모두 설명할 수 있나요?

 

HTTPS 통신과정 쉽게 이해하기 #3(SSL Handshake, 협상)

고대 그리스에서는 타인에게 노출되어서는 안 될 중요한 정보를 보낼 때, 전달하는 이(사자)의 머리를 빡빡 깎아서 중요한 정보를 적은 후 머리가 자라서 글이 보이지 않으면 그제야 상대방에게

aws-hyoh.tistory.com

 

 

curl -L

서버에서 HTTP 301 이나 HTTP 302 응답이 왔을 경우 redirection URL 로 따라간다.

--max-redirs 뒤에 숫자로 redirection 을 몇 번 따라갈지 지정할 수 있다. 기본 값은 50이다.

 

curl -v google.com 을 실행하면 결과값으로 다음과 같이 HTTP 301 이 리턴된다.

HTTP/1.1 301 Moved

-L 옵션을 추가하면 www.google.com으로 재접속하여 결과를 받아오게 된다.

 

 

curl --data
curl -X POST --data '{"key1":"xyz", "key2":"xyz", "key3":1, "key4":"test", "key5":"asecurity", "key6":"asecurity"}' \
http://localhost/

key-value 쌍으로 데이터를 보낼 수 있다.

이때 POST라고 명시하지 않아도 자동으로 POST 요청으로 전송된다.

 

curl -o

curl -o kk.yaml https://raw.githubusercontent.com/kubernetes/website/main/content/ko/examples/application/deployment.yaml

 

파일을 다운로드 받으며 원하는 이름으로 받을 수 있다.

kk.yaml 으로 파일을 받게 된다.

 

 

curl -O

대문자라면 원래 파일 이름으로 받게 된다.

 

여러 파일을 한 번에 다운로드 하려면 각 url마다 앞에 -O 옵션을 붙여서 사용하면 된다.

curl \
-O kk.yaml https://raw.githubusercontent.com/kubernetes/website/main/content/ko/examples/application/deployment.yaml 
-O https://raw.githubusercontent.com/kubernetes/website/main/content/ko/examples/pods/resource/memory-request-limit.yaml

 

curl -k

https사이트에 SSL인증 없이 요청을 보낼 수 있다.

 

 

curl -I

curl -I --http2 https://www.google.com/

리소스의 HTTP 헤더만 가져올 수 있다.

 

 

curl -H

원하는 헤더를 입력할 수 있다.

아래 -X 예제에서 같이 확인.

 

curl -X

원하는 HTTP 메소드를 뒤에 붙여서 사용할 수 있다.

curl -X POST \
    --data "" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/datasets?datasetId=my-dataset"