2013-04-19 27 views
0

我使用-O--output-document選項wget來存儲從網站獲取http。然而,-O選項需要一個輸出文件存儲,我想將它存儲在我的程序中的一個變量中,這樣我可以更容易地操作它。有沒有辦法做到這一點,而無需從文件中重新讀取它?實質上,我手動創建一個原始緩存。Ruby將wget輸出存儲在變量中

示例代碼

#!/usr/bin/ruby 
url= "http://www.google.com" 
whereIWantItStored = `wget #{url} --output-document=outsideFile` 

參考: 我發現在我的計劃之內使用wget這個職位有幫助:Using wget via Ruby on Rails

+0

結果='的wget#{URL} -O -' 確保URL不是用戶提供的,以避免殼注射。 –

回答

3
#!/usr/bin/ruby 
url= "http://www.google.com" 
whereIWantItStored = `wget #{url} -O -` 

一定要淨化你的網址,以避免外殼注塑。 -O之後的意思是標準輸出,它被ruby反引號捕獲。

https://www.owasp.org/index.php/Command_Injection解釋殼注射。

http://apidock.com/ruby/Shellwords/shellescape對於紅寶石> = 1.9或Escape Gem紅寶石1.8.x的

+0

BRILLIANT !!不能告訴我嘗試了多少次,但我在選項和短劃線之間留下了'='符號。用空間替換解決了這個問題。謝謝您的幫助! – AnthonyW

+0

你也可以給我一個參考頁面,這樣我可以更加註意消毒我的網址嗎? – AnthonyW

0

我不會使用wget。我會用HTTParty之類的東西。

然後,你可以這樣做:

require 'httparty' 
url = 'http://www.google.com' 
response = HTTParty.get(url) 

whereIWantItStored = response.code = 200 ? response.body : nil 
+0

response.code = 200 <==這是什麼檢查? – AnthonyW

+0

確保頁面正確返回。 500代碼將是錯誤響應,404代碼將是未找到的頁面。 –

+0

啊,我明白了。謝謝。 – AnthonyW

相關問題