2016-06-07 73 views
0

我有一個PHP腳本觸發遠程bash腳本這又引發另一個讓遠程bash腳本(所有機器都互相交談與SSH密鑰對,做工精細)...bget腳本中的wget只下載部分文件?

PHP(服務器1) - > BASH(服務器2) - > BASH(服務器3)

在第一個bash腳本中有一大堆函數,它們都可以很好地工作,變量在進程中通過,然後在最後有一個命令在服務器3上運行另一個腳本:

ssh [email protected] "/var/www/getpodcast.sh $1"; 

這也適用,因爲腳本被觸發:

getpodcast.sh($ 1包含文件名如:mymusic.mp3)

#!/bin/bash 
wget -o /var/www/vhosts/site1/httpdocs/audio/$1 http://xxx.xx.xx.xx.xxx/complete/$1 

這應該在這個階段被下載文件,但由於某種原因,只下載部分文件。完整的文件大小應該在115mb左右,但是每次運行它只會下載前10或20k的文件?這個數字每次運行都不一樣,它不是恆定的。

我已經嘗試過在這個腳本中使用wget -b來強制它在後臺下載,但是如果我這樣做的話沒有下載。

我在這種情況下用錯誤的方式使用wget?由於它是由遠程bash腳本觸發的,我需要提供一些額外的安全性或命令來實現此目的?

非常感謝!

+0

你確定10或20k實際上是MP3文件的開始,而不是HTML錯誤頁面? – ghoti

+0

這是一個很好的觀點。不,我不知道,我會如何檢查?我只是假定它是這個文件。如果是這種情況,可能會導致錯誤頁面觸發? – Grant

+0

你能否通過網絡瀏覽器下載該文件? – Arijit

回答

0

根據註釋,您發現wget命令的輸出中包含wget 產生的文本,而不是您指定的URL中文件的內容。

根據wget的手冊頁:

-o logfile 
    --output-file=logfile 
     Log all messages to logfile. The messages are normally reported to 
     standard error. 

這是不是你要找什麼,所以是的,這是一個wget的用法錯誤。

相反,你可能既想使用curl,它採用了-o選擇你所期望的,或者切換到了wget的-O(大寫的O)選項的方式。請注意,默認情況下wget會將其保存的文件命名爲與URL中相同的文件;閱讀手冊頁,看看-O的行爲與此不同。

+0

嘗試更改爲-O,並且現在沒有任何內容正在下載,請嘗試捲曲而不是 – Grant

+0

無法讓wget工作,但捲曲完美無缺,謝謝bro;) – Grant