curl
curl Àº Ä¿¸Çµå ¶óÀο¡¼ µ¿ÀÛÇÏ´Â µ¥ÀÌŸ ¼Û¼ö½Å Åø·Î HTTP, HTTPS, FTP, LDAP, SCP, TELNET, SMTP, POP3 µî ÁÖ¿äÇÑ ÇÁ·ÎÅäÄÝÀ» Áö¿øÇÑ´Ù.
¸®´ª½º¿Í Mac OS X, À¯´Ð½º¿Í À©µµµî ÁÖ¿ä OS ¿¡¼ ±¸µ¿µÇ¹Ç·Î Ç÷§Æû°ú OS¿¡ ±¸¾Ö ¹ÞÁö ¾Ê°í À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Ù.
curl ÀÇ ÇÏÀ§ ¸ðµâ·Î´Â libcurl À̶ó´Â C ¾ð¾î ±â¹Ý ¶óÀ̺귯¸®°¡ Àִµ¥ C, C++ ÇÁ·Î±×·¥ °³¹ß½Ã HTTP, HTTPS, FTP, LDAP µîÀÇ protocol °ú ¿¬°è°¡ ÇÊ¿äÇÏ´Ù¸é libcurl À» »ç¿ëÇÏ¿© ¼Õ½±°Ô ¿¬°èÇÒ ¼ö ÀÖ´Ù.
»ç¿ë¹ý
curl [options...] <url> Çü½ÄÀ¸·Î »ç¿ëÇÏ¸é µÈ´Ù.
option 󸮴 GNU getopt ¸¦ »ç¿ëÇϹǷΠÇÏÀÌÇ Çϳª¸¦ ºÙÀÌ´Â short Çü½ÄÀÇ ¿É¼Ç°ú ÇÏÀÌÇ µÎ°³·Î ½ÃÀ۵Ǵ long Çü½ÄÀÇ options ÀÌ ÀÖ´Ù.
ÁÖ¿ä options
curlÀº ´Ù¾çÇÑ ÇÁ·ÎÅäÄÝ°ú ±â´ÉÀ» Áö¿øÇϹǷΠ¸¹Àº ¸í·É¾î¿Í ¿É¼ÇÀ» °®°í ÀÖ´Ù. ¿©±â¿¡¼ Á¦ÀÏ ¸¹ÀÌ »ç¿ëµÇ´Â http/https °ü·Ã ¿É¼ÇÀ» »ìÆì º¸ÀÚ.
short | long | ¼³¸í | ºñ°í |
---|---|---|---|
-k | --insecure | https »çÀÌÆ®¸¦ SSL certificate °ËÁõ¾øÀÌ ¿¬°áÇÑ´Ù. | wget ÀÇ --no-check-certificate °ú µ¿ÀÏÇÑ ¿ªÇÒ ¼öÇà |
-l | --head | HTTP header ¸¸ º¸¿©ÁÖ°í content ´Â Ç¥½ÃÇÏÁö ¾Ê´Â´Ù | |
-D | --dump-header <file> | <file> ¿¡ HTTP header ¸¦ ±â·ÏÇÑ´Ù. | |
-L | --location | ¼¹ö¿¡¼ HTTP 302 redirection ÀÀ´äÀÌ ¿ÔÀ» °æ¿ì redirection URL ·Î µû¶ó°£´Ù. | curl -v daum.net À» ½ÇÇàÇÏ¸é °á°ú°ªÀ¸·Î ´ÙÀ½°ú °°ÀÌ HTTP 302 °¡ ¸®ÅϵȴÙ. < HTTP/1.1 302 Object Moved -L ¿É¼ÇÀ» Ãß°¡Çϸé www.daum.net À¸·Î ÀçÁ¢¼ÓÇÏ¿© °á°ú¸¦ ¹Þ¾Æ¿À°Ô µÈ´Ù. |
-d | --data | HTTP Post data | FORM À» POST ÇÏ´Â HTTP³ª JSON À¸·Î µ¥ÀÌŸ¸¦ ÁÖ°í¹Þ´Â REST ±â¹ÝÀÇ À¥¼ºñ½º µð¹ö±ë½Ã À¯¿ëÇÑ ¿É¼ÇÀÌ´Ù |
-v | --verbose | µ¿ÀÛÇÏ¸é¼ ÀÚ¼¼ÇÑ ¿É¼ÇÀ» Ãâ·ÂÇÑ´Ù. | |
-J | --remote-header-name | ¾î¶² À¥¼ºñ½º´Â ÆÄÀÏ ´Ù¿î·Îµå½Ã Content-Disposition Header ¸¦ ÆĽÌÇØ¾ß Á¤È®ÇÑ ÆÄÀÏÀ̸§À» ¾Ë ¼ö ÀÖÀ» °æ¿ì°¡ ÀÖ´Ù. -J ¿É¼ÇÀ» ÁÖ¸é Çì´õ¿¡ ÀÖ´Â ÆÄÀÏ À̸§À¸·Î ÀúÀåÇÑ´Ù. | curl 7.20 ÀÌ»óºÎÅÍ Ãß°¡µÈ ¿É¼Ç |
-o | --output FILE | curl Àº remote ¿¡¼ ¹Þ¾Æ¿Â µ¥ÀÌŸ¸¦ ±âº»ÀûÀ¸·Î´Â Äֿܼ¡ Ãâ·ÂÇÑ´Ù. -o ¿É¼Ç µÚ¿¡ FILE À» Àû¾îÁÖ¸é ÇØ´ç FILE ·Î ÀúÀåÇÑ´Ù. (download ½Ã À¯¿ë) | |
-O | --remote-name | file ÀúÀå½Ã remote ÀÇ file À̸§À¸·Î ÀúÀåÇÑ´Ù. -o ¿É¼Çº¸´Ù Æí¸®ÇÏ´Ù. | |
-s | --silent | Á¤¼÷ ¸ðµå. ÁøÇà ³»¿ªÀ̳ª ¸Þ½ÃÁöµîÀ» Ãâ·ÂÇÏÁö ¾Ê´Â´Ù. -o ¿É¼ÇÀ¸·Î remote data µµ /dev/null ·Î º¸³»¸é °á°ú¹°µµ Ãâ·ÂµÇÁö ¾Ê´Â´Ù | HTTP response code ¸¸ °¡Á®¿À°Å³ª ÇÒ °æ¿ì À¯¸® |
ÀÌÁ¦ curlÀ» »ç¿ëÇÏ¿© HTTP/HTTPS ¿äûÀ» º¸³»°í ¹Þ´Â ¿¹Á¦¸¦ ¾Ë¾Æ º¸ÀÚ.
HTTP/HTTPS ¿¬°á
curl ¸í·É°ú ÇÔ²² URL À» ¸í½ÃÇϸé URL ¿¡ ÀÖ´Â ÄÁÅÙÃ÷¸¦ ´Ù¿î·Îµå ¹Þ¾Æ¼ ÄַܼΠÃâ·ÂÇÑ´Ù. ´ÙÀ½ ¸í·É¾î´Â index.html À» Àü¼ÛÈÄ »ç¿ëÀÚÀÇ Äֿܼ¡ Ãâ·ÂÇÏ°Ô µÈ´Ù.
¼¹ö ÄÁÅÙÃ÷ ´Ù¿î·Îµå
ÄַܼΠ´Ù¿î·Îµå ¹Þ´Â °Ç ±×¸® À¯¿ëÇÏÁö ¾Ê´Â °æ¿ì°¡ ¸¹´Ù. ƯÈ÷ ¹ÙÀ̳ʸ® ÆÄÀÏÀ» Ãâ·ÂÇϸé Å͹̳ÎÀÌ ±úÁ®¼ ÀÌÈÄ ÀÔ·Â/Ãâ·ÂµÇ´Â ¹®ÀÚ°¡ ±úÁ® º¸¿©¼ Á¤»óÀûÀÎ ÀÛ¾÷ÀÌ ºÒ°¡´ÉÇÏ¿© reset ¸í·É¾î·Î Å͹̳ÎÀ» ÃʱâÈÇØ¾ß ÇÒ ¼ö ÀÖ´Ù.
curl ½ÇÇà½Ã -o, --output ¿É¼ÇÀ¸·Î Ãâ·Â ÆÄÀÏÀ» ÁöÁ¤Çϸé ÄַܼΠÃâ·ÂÇÏÁö ¾Ê°í ÆÄÀÏ·Î ÀúÀåÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº index.html À» bash_manual.html ·Î ÀúÀåÇÑ´Ù.
¸Å¹ø Ãâ·Â ÆÄÀÏÀ» ÁöÁ¤ÇÏ´Â °ÍÀº ¹ø°Å·Î¿î ÀÏÀÌ´Ù. -O, --remote-name ¿É¼ÇÀ» »ç¿ëÇϸé URL ¿¡¼ ÆÄÀϸíÀ» ÃßÃâÇÏ¿© ÀúÀåÇϹǷΠÃâ·Â ÆÄÀÏÀ» »ý·«ÇÒ ¼ö ÀÖ¾î¼ -o º¸´Ù Æí¸®ÇÑ °æ¿ì°¡ ¸¹´Ù.
´ÙÀ½Àº URL ¿¡¼ ÄÁÅÙÃ÷ À̸§ÀÎ index.html À» ÃßÃâÇÏ¿© ÆÄÀÏ·Î ÀúÀåÇÑ´Ù.
ÄÁÅÙÃ÷ À̵¿½Ã µû¶ó°¡±â
À¥ ¼¹ö¿¡¼ HTTP ÀÀ´ä°ªÀ¸·Î ÇØ´ç ÄÁÅÙÃ÷°¡ ´Ù¸¥ °÷¿¡ ÀÖ´Ù´Â 301 Moved Permanently ³ª 302 Found ¸¦ º¸³ÂÀ» °æ¿ì curl ÀÇ ±âº» µ¿ÀÛÀº ´õ ÀÌ»ó ÁøÇàÇÏÁö ¾Ê´Â °ÍÀÌ´Ù.
-L, –location ¿É¼ÇÀ» ÁÖ¸é º¯°æµÈ URL ·Î µû¶ó °¡¼ °á°ú¸¦ °¡Á®¿Â´Ù. º¯°æµÈ URL ¿¡ ¿¬°áÇß´õ´Ï ¶Ç ´Ù¸¥ °÷¿¡ ÄÁÅÙÃ÷°¡ ÀÖ´Ù´Â ÀÀ´äÀ» º¸³¾ ¼ö ÀÖ´Ù. curl Àº ÀÌ·¸°Ô ´Ù¸¥ À§Ä¡¸¦ º¸³¾ °æ¿ì ¸î ¹øÀ» µû¶ó°¥ Áö ¿©ºÎ¸¦ --max-redirs µÚ¿¡ ¼ýÀÚ·Î ÁöÁ¤ÇÒ ¼ö ÀÖ°í ±âº» ¼³Á¤Àº 50ÀÌ´Ù.
HTTP ÀÎÁõ
ƯÁ¤ »çÀÌÆ®³ª ÄÁÅÙÃ÷´Â ÀÎÁõÀ» °ÅÃÄ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. -u, –user ¿É¼Ç µÚ¿¡ ¾ÆÀ̵ð:¾ÏÈ£ ¸¦ ÁöÁ¤ÇÏ¿© ÀÎÁõÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº ID ·Î myuserid ¸¦ ¾ÏÈ£·Î mypwd ¸¦ ¼³Á¤ÇÏ¿© À¥ »çÀÌÆ®¿¡ ÀÎÁõÀ» ¿äûÇÏ´Â ¿¹Á¦ÀÌ´Ù.
HTTP Çì´õ ¼³Á¤
¼¹ö¿¡ ¿¬°á½Ã ƯÁ¤ HTTP Çì´õ¸¦ ¼³Á¤ÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖ´Ù. ¿¹·Î ¼¹ö°¡ REST API ¸¦ Á¦°øÇÒ °æ¿ì µ¥ÀÌŸ Çü½ÄÀÌ XML ÀÎÁö JSON ÀÎÁö¸¦ Content-Type ¿¡ ÁöÁ¤ÇØ¾ß ÇÏ´Â °æ¿ì°¡ ÀÖÀ¸¸ç ÀÌ·² °æ¿ì -H, –header ¿É¼ÇÀ¸·Î ¼³Á¤ÇÒ HTTP Çì´õÀÇ À̸§°ú °ªÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù.
JSON Çü½ÄÀÏ °æ¿ì ÄÁÅÙÃ÷ Çü½ÄÀÌ "Content-Type: application/json" À̾î¾ß ÇϹǷΠ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
HTTP µ¥ÀÌŸ POST
HTTP ·Î ¼¹ö¿¡ ¿äû½Ã ±âº» ¹æ½ÄÀº GET ÀÌ´Ù. POST ¹æ½ÄÀ» »ç¿ëÇÒ °æ¿ì -X,–request ¿É¼Ç µÚ¿¡ POST ¸¦ ¸í½ÃÇÏ¿© ¿äû ¹æ½ÄÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸¸ç POST ÇÒ µ¥ÀÌŸ´Â -d, –data ¿É¼ÇÀ¸·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½Àº µ¥ÀÌŸ¸¦ POST ÇÏ´Â ¿¹Á¦·Î HTTP ¿äûÀ» ¼¹ö´Ü¿¡¼ È®ÀÎÇϱâ À§ÇØ HTTP ¿äûÀ» °Ë»çÇØ ÁÖ´Â ¼ºñ½ºÀÎ http://requestb.in À» ÅëÇØ Àü¼ÛÇÑ ³»¿ëÀ» È®ÀÎÇØ º¸ÀÚ.
Æ÷½ºÆ®ÇÒ µ¥ÀÌŸ´Â Ư¼ö ¹®ÀÚ°¡ ÀÖÀ» °æ¿ì ÀÏÀÏÀÌ º¯È¯ÇØ ÁÖ¾î¾ß ÇÑ´Ù. À§¿¡¼´Â name ÆĶó¹ÌÅÍÀÇ °ª¿¡ °ø¹éÀÌ ÀÖÀ¸¹Ç·Î + ·Î º¯È¯Çؼ Àü¼ÛÇßÁö¸¸ µ¥ÀÌŸ°¡ ¸¹À» °æ¿ì ÀÏÀÏÀÌ ¼öÀÛ¾÷À¸·Î º¯È¯ÇØ ÁÖ´Â °ÍÀº ¹ø°Å·Î¿î ÀÏÀÌ´Ù.
--data-urlencode ¿É¼ÇÀ» »ç¿ëÇϸé curl ÀÌ URL Çü½ÄÀ¸·Î ÀÎÄÚµùÇØ ÁֹǷΠÆí¸®ÇÏ´Ù.
ÁÖÀÇÇÒ Á¡Àº ¸ðµç Ư¼ö ¹®ÀÚ¸¦ ÀÎÄÚµù ÇØ ÁֹǷΠÆĶó¹ÌÅÍÀÇ ±¸ºÐÀÚÀÎ & µµ ÀÎÄÚµùÇϹǷΠÆĶó¹ÌÅÍ°¡ ¿©·¯ °³ÀÏ °æ¿ì ¿É¼ÇÀ» ¿©·¯ ¹ø »ç¿ëÇÏ¿© ºÐ¸®ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½Àº --data-urlencode ¿É¼ÇÀ¸·Î À§ POST µ¥ÀÌŸ¸¦ ¼öÇàÇÏ´Â ¿¹Á¦ÀÌ´Ù.
POST ÇÒ µ¥ÀÌŸ°¡ ÆÄÀÏ·Î Á¸ÀçÇÒ °æ¿ì -d ¿É¼ÇµÚ¿¡ @ ¸¦ ºÙÀÌ°í ÆÄÀϸíÀ» ¸í½ÃÇÏ¸é µÈ´Ù. REST API ¸¦ Á¦°øÇÏ´Â ¼ºñ½º°¡ Àִµ¥ »ç¿ëÀÚ ÀÎÁõÀÌ ÇÊ¿äÇÏ°í µ¥ÀÌŸ´Â JSON Çü½ÄÀ¸·Î Àü¼ÛÇØ¾ß ÇÑ´Ù°í °¡Á¤ÇØ º¸ÀÚ. ¼¹ö¿¡ º¸³¾ µ¥ÀÌŸ´Â data.js ¶ó´Â ÆÄÀÏ¿¡ ±â¼úµÇ¾î ÀÖ´Ù.
ÀÌÁ¦ curl À» ÀÌ¿ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ »ç¿ëÀÚ ÀÎÁõ ¹× REST API ¸¦ È£ÃâÇÒ ¼ö ÀÖ´Ù.
Àü¼ÛÇÒ ÆÄÀÏÀÌ À̹ÌÁö³ª ¾ÐÃà ÆÄÀϵîÀÇ ¹ÙÀ̳ʸ® ÆÄÀÏÀÏ °æ¿ì -d ¿É¼Ç ´ë½Å --data-binary ¿É¼ÇÀ» Ãß°¡ÇÏ¸é ¹ÙÀ̳ʸ®·Î ó¸®ÇϹǷΠµ¥ÀÌŸ°¡ ±úÁöÁö ¾Ê°í Àü¼ÛµÈ´Ù.
È°¿ë
curl Àº ´Ù¾çÇÑ ÇÁ·ÎÅäÄÝÀ» Áö¿øÇÏ´Â À¯¿ëÇÑ URL 󸮱â·Î¼ ƯÈ÷ HTTP/HTTPS ¼¹ö¿Í ¿¬°áÇÏ¿© µ¥ÀÌŸ¸¦ ÁÖ°í ¹ÞÀ» ÇÊ¿ä°¡ ÀÖÀ»¶§ Æí¸®ÇÏ´Ù. À¥ ¼¹ö³ª WAS ¸¦ ±¸ÃàÇßÀ» ¶§ Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö¸¦ curl À» ÀÌ¿ëÇÏ¿© °£´ÜÇÏ°Ô È®ÀÎÇØ º¼ ¼ö ÀÖ°í ¿ø°ÝÁö ¼¹ö¿¡¼ ÆÄÀÏÀ» ´Ù¿î¹Þ°Å³ª ¼¹ö¿¡ µ¥ÀÌŸ¸¦ Àü¼ÛÇÒ ¼ö µµ ÀÖ´Ù.
ƯÈ÷ REST ±â¹Ý API ¸¦ Á¦°øÇÏ´Â À¥¼ºñ½º°¡ ÀÖÀ» °æ¿ì curl ÀÇ POST ±â´ÉÀ» ÀÌ¿ëÇϸé REST API ÀÇ Á¤»ó µ¿ÀÛ ¿©ºÎ¸¦ ¼Õ½±°Ô µð¹ö±ëÇÒ ¼ö ÀÖÀ¸¸ç Atalssian JIRA³ª SalesForce.com µîÀÇ ¸¹Àº REST API ¼³¸í¼ÀÇ ¿¹Á¦·Î curl ·Î REST API È£ÃâÇÏ´Â ¹æ¹ýÀ» ¼³¸íÇÏ°í ÀÖ´Ù.
ÇâÈÄ ¼³Ä¡ÇÒ redmine À̳ª sonatype nexus, jenkins ¼¹öµîµµ REST API ¸¦ Á¦°øÇϹǷΠ¼¹öÀÇ ±â´ÉÀ» ¿ÜºÎ¿¡¼ API ·Î »ç¿ëÇÏ·Á¸é REST API ¿¡ ´ëÇÑ ÀÌÇØ¿Í »ç¿ëÀº ÇʼöÀ̸ç À̶§ curl Àº À¯¿ëÇÑ µµ±¸·Î È°¿ëÇÒ ¼ö ÀÖ´Ù.