2012-08-06 36 views
9

我正在編寫一個Bash腳本來從Snapito的網頁快照API下載圖像文件。 API可以返回由不同的HTTP響應代碼和/或一些自定義標題指示的各種響應。我的腳本旨在作爲一個自動的Cron作業運行,從MySQL數據庫中提取URL並將屏幕截圖保存到本地磁盤。我正在使用curl。我想使用一個curl命令做這些三件事情:使用CURL下載文件並查看標題和狀態代碼

  1. 提取物中的HTTP響應代碼
  2. 提取頭
  3. 文件保存到本地(如果該請求成功)

我可以使用多個curl請求來做到這一點,但我想盡量減少我點擊Snapito服務器的次數。任何curl專家在那裏?

或者如果某人有一個Bash腳本可以響應完整文檔的Snapito API響應集,那就太棒了。這裏是their API documentation

謝謝!

+0

你可以解析輸出,但我想這在python/ruby​​/php/...中更容易 – 2012-08-06 21:38:45

回答

14

使用dump頭選項: curl -D /tmp/headers.txt http://server.com

+1

啊,是的。我忽略了'-D'選項。這裏是我現在使用的:'curl -s -L -D/dev/stdout -o $ IMAGE_FILE $ SNAPITO_URL'謝謝! – curtisdf 2012-08-06 21:48:41

6

使用捲曲-i(包括HTTP標頭) - 這將產生報頭,接着是空白線,隨後的內容。

您可以拆分標題/內容(或使用-D直接保存到文件,如上所示)。

+1

我想你是在考慮'-I'選項,而不是'-i'。 – curtisdf 2012-08-06 21:49:40

+1

不是。 - 我只是標題,-i是標題+內容。 – 2012-08-06 22:03:39

+1

我明白了,你是對的。使用'-i'會給我另一個問題:解析輸出以從二進制圖像數據中分離出頭文件。我用'-D'選項很好地處理了stdout(並由'$()'包裝器捕獲),'-o'選項用於保存文件。雖然謝謝!我會記得下次再看一下'-i'。 – curtisdf 2012-08-06 23:10:31