본문 바로가기

OS/Linux

Curl을 사용하여 URL에 대한 상세정보 알아보기

1. 하고싶은 것?

 - curl을 사용하여 URL의 호출  시간 및 기타 상세 정보를 보고싶음.


2. 명령어 샘플 보기

 - 명령어

curl -w '\nTime_namelookup:\t%{time_namelookup}\nTime_Connect:\t\t%{time_connect}\nTime_Appconnect:\t%{time_appconnect}\nTime_Redirect:\t\t%{time_redirect}\nTime_Pretransfer:\t%{time_pretransfer}\nTime_Starttransfer:\t%{time_starttransfer}\n\nTime_Total:\t\t%{time_total}\n' -o /dev/null -s  http://blog.geun.kr


 - 결과


3. 상세값 설명

 

 


 time_appconnect

 SSL/SSH/기타 연결/핸드 셰이크가 원격 호스트에 완료 될 때까지 걸린 시간 (초)

 

 time_connect

 원격 호스트에 대한 TCP 연결이 완료 될 때까지 소요된 시간(초)

 

 time_namelookup

 namelookup이 완료될때 까지 소요된 시간(초)

 

 time_pretransfer

 

 

 time_redirect 여러 리디렉션의 전체 실행 시간을 보여줍니다. 
 time_starttransfer  
 time_total

 전체 소요 시간

 


4. 더 많은 정보 보기

 - format.json을 만든다.

{
"host": {
"local_ip": "%{local_ip}",
"local_port": "%{local_port}",
"remote_ip": "%{remote_ip}",
"remote_port": "%{remote_port}"
},
"connection": {
"http_version": "%{http_version}",
"http_code": "%{http_code}",
"http_connect": "%{http_connect}",
"num_connects": "%{num_connects}",
"num_redirects": "%{num_redirects}",
"redirect_url": " %{redirect_url}"
},
"file": {
"content_type": "%{content_type}",
"filename_effective": "%{filename_effective}",
"ftp_entry_path": "%{ftp_entry_path}",
"size_download": "%{size_download}",
"size_header": "%{size_header}",
"size_request": "%{size_request}",
"size_upload": "%{size_upload}",
"speed_download": "%{speed_download}",
"speed_upload": "%{speed_upload}",
"ssl_verify_result": "%{ssl_verify_result}",
"url_effective": "%{url_effective}"
},
"time": {
"time_appconnect": "%{time_appconnect}",
"time_connect": "%{time_connect}",
"time_namelookup": "%{time_namelookup}",
"time_pretransfer": "%{time_pretransfer}",
"time_redirect": "%{time_redirect}",
"time_starttransfer": "%{time_starttransfer}",
"time_total": "%{time_total}"
}
}

 - 명령어

curl -w '@/path/format.json' -o /dev/null -s  http://blog.geun.kr


 - 결과

 
   "host": 
      "local_ip":"172.30.112.192",
      "local_port":"61895",
      "remote_ip":"27.0.236.139",
      "remote_port":"80"
   },
   "connection": 
      "http_version":"1.1",
      "http_code":"400",
      "http_connect":"000",
      "num_connects":"1",
      "num_redirects":"0",
      "redirect_url":" "
   },
   "file": 
      "content_type":"text/html; charset=iso-8859-1",
      "filename_effective":"/dev/null",
      "ftp_entry_path":"",
      "size_download":"347",
      "size_header":"166",
      "size_request":"79",
      "size_upload":"0",
      "speed_download":"2330.000",
      "speed_upload":"0.000",
      "ssl_verify_result":"0",
      "url_effective":"http://blog.geun.kr/"
   },
   "time": 
      "time_appconnect":"0.000000",
      "time_connect":"0.142898",
      "time_namelookup":"0.137409",
      "time_pretransfer":"0.142976",
      "time_redirect":"0.000000",
      "time_starttransfer":"0.148800",
      "time_total":"0.148910"
   }

}



참고자료 

 - https://www.shellhacks.com/check-website-response-time-linux-command-line/

 - https://gist.github.com/manifestinteractive/ce8dec10dcb4725b8513

 - https://blog.josephscott.org/2011/10/14/timing-details-with-curl/