curl的命令列工具功能非常強大,這些資料互動的功能基本上都是通過url方式進行的,我們先來看看curl對多個url的靈活操作,這些規則使我們的 批處理需求應用起來非常方便。
1、用{}表示多個url
如 http://site..com, 只要在{}中寫上不同的部分,就可以表示3個url了。
2、用表示多個url
如 /file[001-100].txt, 中表示按數字或字母的順序排列。
還能表示不連續的排列,如 ":" 後面的數字表示等差排列的階躍數。
3、結合起來使用
如 對於所有的布林型option,基本上--option表示支援這個選項,--no-option表示禁用這個選項。下面總結幾個比較有用的 options。
如果輸出的檔案是乙個多級目錄的話,則要配合--create-dirs選項,--create-dirs將自動建立設定的輸出目錄。
如果希望儲存到本地的檔名和伺服器上的相同,就可以直接用-o選項(大寫o),而省去指定本地檔名。
2、-c/--cookie-jar 和 -b/--cookie
這是兩個操作cookie的選項,很多伺服器是需要cookie資訊的。用前乙個選項可以指定乙個檔案,將其他檔案中的cookie或者從伺服器得到的 cookie寫到檔案中;後乙個選項則用來向伺服器傳送cookie資訊,可以用"name=data"的形式,也可以直接跟乙個儲存cookie的檔案 名。
3、-x/--proxy
該選項為http指定**及埠,如果不指定埠,預設為1080。如 curl -x 201.36.208.19:3128
4、-u/--user 和 -u/--proxy-user
登入某些頁面或ftp需要先進行認證,輸入使用者名稱和密碼。curl的這個選項可以直接處理這類操作,用指定的賬號和密碼進行登入認證。
後面的選項指定**的使用者名稱和密碼,這樣便可以直接用這個**訪問網頁了,如 curl -u user:password -x 201.36.208.19:3128
5、-a/--user-agent
該選項可以指定客戶端型別,伺服器通過該選項判斷使用者應用的平台及瀏覽器資訊。如 curl -a "mozilla/4.0 (compatible; msie 6.0; windows nt 5.0)"
表示告訴伺服器,客戶端是執行在windows 2000系統上的ie6.0。
6、-d/--data
該選項用來以post方式向http伺服器傳送特定資料,最常用的就是提交表單。如 curl -d "user=username&password=111" 表示用賬號username和密碼111向站點傳送登入申請。其中多個資料段可以用"&"進行連線一起傳送;如果資料前面加上符號"@",則資料 **為後面指定的檔案,如 curl -d password=@d:\pw.txt
7、-c/--continue-at
改選項提供斷點續傳功能,與-o選項配合使用。如 curl -c -o /mufs052009053117155750a8be70.***。 如果指定offset,則從offset的位置開始續傳。如果未指定offset,或者直接用"-c -",則curl會自己分析該從什麼位置開始續傳。
curl -r 0-1024000 -o new_divide_1.*** /mufs052009053117155750a8be70.*** &
curl -r 1024001-2048000 -o new_divide_2.*** /mufs052009053117155750a8be70.*** &
curl -r 2048001- -o new_divide_3.*** /mufs052009053117155750a8be70.***
9、-w/--write-out
該選項格式化輸出一些使用者操作的資料資訊,用到的格式化輸出符除了"\n","\r","\t"這些常見轉義符外,還包括"@"和"%"。其 中"@filename"表示輸出filename檔案中的資料,"@-"表示輸出使用者寫入標準輸入的資料;"%"識別符號後面跟上定義的關鍵字, 則可以輸出對應的curl資料,常用的關鍵字有:
http_code —— 上次操作返回的響應碼;
time_total —— 上次操作耗時,單位為秒;
time_connect —— tcp連線遠端主機的耗時,單位為秒;
time_pretransfer —— 檔案真正開始傳輸之前互動耗時,單位為秒,可能主要包括一些命令處理和協議分析的耗時;
time_starttransfer —— 檔案的第乙個位元組開始傳輸之前的耗時,單位為秒,包括time_pretransfer和伺服器計算結果的時間;
size_upload —— 上傳的總位元組數;
size_request —— 傳送http請求的總位元組數;
speed_upload —— curl成功上傳的平均上傳速度;
舉例:curl -o page.html -s -w %:%:% 其中-s表示安靜模式,即略去所有 狀態資訊。
10、--connect-timeout 和 -m/--max-time
前者表示允許的連線的最長耗時,單位為秒;後者表示允許的整個操作的最長耗時,單位為秒,這個選項對於控制乙個批處理操作的時長非常有用。
11、--limit-rate 、 -y/--speed-limit 和 -y/--speed-time
--limit-rate 指定最大的資料傳輸率,單位為bytes/s,也可以用'k'或'k'表示kb/s,'m'或'm'表示mb/s,'g'或 'g'表示gb/s,所給的speed為平均傳輸率,短時間峰值可能會超過此值;
-y/--speed-limit 指定最小傳輸率,單位為bytes/s,如果小於speed值,則傳輸中止,如此時-y選項沒有被設定,預設time為 30;-y/--speed-time 指定-y選項的有效時間段,如果-y選項沒有被設定,預設為1。
13、--retry 、 --retry-delay 和 --retry-max-time
當傳輸過程中出現錯誤,如超時、ftp 5xx返回碼或者http 5xx返回碼,curl會進行按照設定進行重試,這幾個選項都與重試有關。--retry 設定重試次數,--retry-delay 設定兩次重試的間隔時間,--retry-max-time 設定兩次重試間隔的最長時間。預設情況下,curl不進行重試;如果重試,第一次間隔1秒,之後每次都間隔上一次的2倍時 間,直到間隔時間達到10分鐘,之後的重試都將採用10分鐘間隔。如果這3個選項的值被重新設定,則執行設定值。
14、-t/--upload-file
該選項是上傳命令,如向http伺服器上傳乙個檔案:curl -t d:\new_divide.*** 向乙個ftp伺服器上傳檔案:curl -t d:\new_divide.*** -u user:password ftp://upload_site:port/path/。
curl定義了一組"exit codes",用來標識在出現錯誤時的相關資訊,目前範圍從1-83,具體資訊可以查閱curl庫自帶的文件。這些退出碼對於我們分析錯誤及原因有很大幫 助。
以上簡單介紹了一下利用curl命令列工具進行一些簡單的http和ftp應用,大家可以試著多用一下,會慢慢發現curl的強大功能,有很多獨特的功能 用起來非常簡單方便
linux curl用法詳解
6 d data 該選項用來以post方式向http伺服器傳送特定資料,最常用的就是提交表單。如 curl d user username password 111 http www.login.com,表示用賬號username和密碼111向站點傳送登入申請。其中多個資料段可以用 進行連線一起傳送...
linux curl 用法詳解
linux curl用法詳解 curl的命令列工具功能非常強大,這些資料互動的功能基本上都是通過url方式進行的,我們先來看看curl對多個url的靈活操作,這些規則使我們的 批處理需求應用起來非常方便。1 用 表示多個url 如 http site.com,只要在 中寫上不同的部分,就可以表示3個...
linux curl 用法詳解
linux curl用法詳解 curl的命令列工具功能非常強大,這些資料互動的功能基本上都是通過url方式進行的,我們先來看看curl對多個url的靈活操作,這些規則使我們的 批處理需求應用起來非常方便。1 用 表示多個url 如 http site.com,只要在 中寫上不同的部分,就可以表示3個...