天天看點

curl的用法記錄

<code>1、http請求跳轉</code>

<code>[root@n86 bin]</code><code># curl -I -L 10.50.200.32</code>

<code>HTTP</code><code>/1</code><code>.1 302 FOUND</code>

<code>Server: nginx</code><code>/1</code><code>.6.2</code>

<code>Date: Fri, 25 Dec 2015 02:43:18 GMT</code>

<code>Content-Type: text</code><code>/html</code><code>; charset=utf-8</code>

<code>Connection: keep-alive</code>

<code>X-Frame-Options: SAMEORIGIN</code>

<code>Location: http:</code><code>//10</code><code>.50.200.32</code><code>/charade/</code>

<code>HTTP</code><code>/1</code><code>.1 200 OK</code>

<code>Vary: Cookie</code>

<code>Set-Cookie: csrftoken=5dY37iQgcjQnYh1jZdrxptyIkTfUh3Rr; expires=Fri, 23-Dec-2016 02:43:18 GMT; Max-Age=31449600; Path=/</code>

<code>2、https請求GET和PUT</code>

<code>使用證書  curl -s --cacert ca.crt</code>

<code>忽略證書  curl -s -k</code>

<code>curl -s -k -u </code><code>"user:passwd"</code> <code>-H </code><code>"Content-type: application/xml"</code> <code>-X GET https:</code><code>//abc</code><code>.com</code><code>/api/vms</code>

<code>curl -s -k \</code>

<code>-u </code><code>"user:passwd"</code> <code>\</code>

<code>-H </code><code>"Content-type: application/xml"</code> <code>\</code>

<code>-d "</code>

<code>&lt;vm&gt;</code>

<code>&lt;name&gt;test03&lt;</code><code>/name</code><code>&gt;</code>

<code>&lt;cluster&gt;&lt;name&gt;Host-Only&lt;</code><code>/name</code><code>&gt;&lt;</code><code>/cluster</code><code>&gt;</code>

<code>&lt;template&gt;&lt;name&gt;centos6u5x64-small-01&lt;</code><code>/name</code><code>&gt;&lt;</code><code>/template</code><code>&gt;</code>

<code>&lt;</code><code>/vm</code><code>&gt;</code>

<code>" \</code>

<code>"https://e01.test/api/vms"</code>

<code>3、http狀态</code>

<code>hostname</code><code>=www.qq.com</code>

<code>1)得到http status</code>

<code>[root@svr200-22 ~]</code><code># curl -o /dev/null -s -w %{http_code} ${hostname}</code>

<code>200</code>

<code>2)得到詳細的 http headers 資訊</code>

<code>[root@svr200-22 ~]</code><code># curl -o /dev/null -v http://${hostname}</code>

<code>* About to connect() to www.qq.com port 80 (</code><code>#0)</code>

<code>*   Trying 14.17.32.211... connected</code>

<code>* Connected to www.qq.com (14.17.32.211) port 80 (</code><code>#0)</code>

<code>&gt; GET / HTTP</code><code>/1</code><code>.1</code>

<code>&gt; User-Agent: curl</code><code>/7</code><code>.19.7 (x86_64-redhat-linux-gnu) libcurl</code><code>/7</code><code>.19.7 NSS</code><code>/3</code><code>.14.0.0 zlib</code><code>/1</code><code>.2.3 libidn</code><code>/1</code><code>.18 libssh2</code><code>/1</code><code>.4.2</code>

<code>&gt; Host: www.qq.com</code>

<code>&gt; Accept: */*</code>

<code>&gt; </code>

<code>  </code><code>% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current</code>

<code>                                 </code><code>Dload  Upload   Total   Spent    Left  Speed</code>

<code>  </code><code>0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0&lt; HTTP</code><code>/1</code><code>.1 200 OK</code>

<code>&lt; Server: squid</code><code>/3</code><code>.4.1</code>

<code>&lt; Date: Wed, 15 Apr 2015 05:54:51 GMT</code>

<code>&lt; Content-Type: text</code><code>/html</code><code>; charset=GB2312</code>

<code>&lt; Transfer-Encoding: chunked</code>

<code>&lt; Connection: keep-alive</code>

<code>&lt; Vary: Accept-Encoding</code>

<code>&lt; Expires: Wed, 15 Apr 2015 05:55:51 GMT</code>

<code>&lt; Cache-Control: max-age=60</code>

<code>&lt; X-Cache: HIT from shenzhen.qq.com</code>

<code>&lt; </code>

<code>{ [data not shown]</code>

<code>100  582k    0  582k    0     0  5573k      0 --:--:-- --:--:-- --:--:-- 6544k* Connection </code><code>#0 to host www.qq.com left intact</code>

<code>* Closing connection </code><code>#0</code>

<code> </code> 

<code>3)指定一個目标主機IP(此處以從dns中得到的一個解析結果為例),得到 http headers 資訊:</code>

<code>[root@svr200-22 ~]</code><code># nslookup ${hostname} |grep Address |grep -v "#53$" |cut -d " " -f2 |head -n 1 |xargs -i curl -I -H "Host:${hostname}" http://{}/ </code>

<code>Server: squid</code><code>/3</code><code>.4.1</code>

<code>Date: Wed, 15 Apr 2015 05:53:16 GMT</code>

<code>Content-Type: text</code><code>/html</code><code>; charset=GB2312</code>

<code>Vary: Accept-Encoding</code>

<code>Expires: Wed, 15 Apr 2015 05:54:16 GMT</code>

<code>Cache-Control: max-age=60</code>

<code>X-Cache: HIT from shenzhen.qq.com</code>

<code>4)指定一個目标主機IP(此處以從dns中得到的一個解析結果為例),得到詳細的 http headers 資訊:</code>

<code>[root@svr200-22 ~]</code><code># nslookup ${hostname} |grep Address |grep -v "#53$" |cut -d " " -f2 |head -n 1 |xargs -i curl -o /dev/null -v -H "Host:${hostname}" http://{}/</code>

<code>* About to connect() to 14.17.32.211 port 80 (</code><code>#0)</code>

<code>* Connected to 14.17.32.211 (14.17.32.211) port 80 (</code><code>#0)</code>

<code>&gt; Host:www.qq.com</code>

<code>&lt; Date: Wed, 15 Apr 2015 05:53:46 GMT</code>

<code>&lt; Expires: Wed, 15 Apr 2015 05:54:46 GMT</code>

<code>&lt; X-Cache: MISS from shenzhen.qq.com</code>

<code>100  582k    0  582k    0     0  5349k      0 --:--:-- --:--:-- --:--:-- 5546k* Connection </code><code>#0 to host 14.17.32.211 left intact</code>

<code>5)得到請求響應時間</code>

<code>[root@svr200-22 ~]</code><code># curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_total: %{time_total}\n" ${hostname}</code>

<code>time_connect: 0.046</code>

<code>time_starttransfer: 0.078</code>

<code>time_total: 0.078</code>

<code>4、curl GET 請求中傳遞參數為 json 格式,且需要傳遞變量進去時,如何處理轉義的問題</code>

<code>有3種方式來處理:</code>

<code>1)轉義參數中的: {} [] " </code>

<code>curl -s \</code>

<code>    </code><code>--unix-socket </code><code>/var/run/docker</code><code>.sock \</code>

<code>    </code><code>"http:/services?filters=\{\"name\":\[\"${service_name}\"\]\}"</code> <code>\</code>

<code>    </code><code>|jq </code><code>'.'</code>

<code>2)轉義參數中的: url外層不用</code><code>""</code><code>包含,内層使用 </code><code>''</code> <code>來限制。</code>

<code>    </code><code>http:</code><code>/services</code><code>?filters=</code><code>'\{"name":\["'</code><code>${service_name}</code><code>'"\]\}'</code> <code>\</code>

<code>    </code> 

<code>3)使用 curl -g 參數來允許 URL 中使用  {}[] 而不用轉義</code>

<code>       </code><code>-g, --globoff</code>

<code>              </code><code>This option switches off the </code><code>"URL globbing parser"</code><code>. When you </code><code>set</code> <code>this option, you can specify URLs that contain the letters {}[] without  having  them  being  inter‐</code>

<code>              </code><code>preted by curl itself. Note that these letters are not normal legal URL contents but they should be encoded according to the URI standard.</code>

<code>執行個體</code>

<code>~]$ curl </code><code>"127.0.0.1:10001/services?filters=\{\"name\":\[\"${service_name}\"\]\}"</code>

<code>GET </code><code>/services</code><code>?filters={</code><code>"name"</code><code>:[</code><code>"t001"</code><code>]} HTTP</code><code>/1</code><code>.1</code>

<code>~]$ curl 127.0.0.1:10001</code><code>/services</code><code>?filters=</code><code>'\{"name":\["'</code><code>${service_name}</code><code>'"\]\}'</code>

<code>~]$ curl -g 127.0.0.1:10001</code><code>/services</code><code>?filters=</code><code>'{"name":["'</code><code>${service_name}</code><code>'"]}'</code>

本文轉自 pcnk 51CTO部落格,原文連結:http://blog.51cto.com/nosmoking/1632915,如需轉載請自行聯系原作者

繼續閱讀