2014-06-05 99 views
1

我使用gsutil工具從Google存儲下載存檔。 我用接下來的CMD命令:gsutil工具中的代理設置

python c:\gsutil\gsutil cp gs://pubsite_prod_rev_XXXXXXXXXXXXX/YYYYY/*.zip C:\Tmp\gs 

一切工作正常,但如果我嘗試從公司代理的是命令,我收到錯誤:

Caught socket error, retrying: [Errno 10051] A socket operation was attempted to an unreachable network 

我試了好幾次,設置代理服務器設置在.boto文件中,但都無濟於事。 有人遇到這樣的問題? 謝謝!

回答

2

請參閱「我通過代理服務器連接,我需要做什麼?」部分。在https://developers.google.com/storage/docs/faq#troubleshooting

基本上,您需要在您的.boto文件中配置代理設置,並且您需要確保您的代理允許流量到accounts.google.com以及* .storage.googleapis.com。

+0

謝謝回答!但是我仍然無法使它工作:( –

+0

您是否能夠登錄到您的代理?如果是這樣,如果您從該計算機運行此命令會發生什麼情況:traceroute storage.googleapis.com –

+0

是的,我可以登錄。這裏[link](https://dl.dropboxusercontent.com/u/68469457/Temp/tracert%20storage.googleapis.com.txt)結果tracert。謝謝! –

0

我相信我在Linux(Ubuntu 12.04.4 LTS)和gsutils 4.2(今天下載)下被忽略的代理設置有同樣的問題。

我一直在看主機上的tcpdump,以確認gsutils正試圖直接路由到Google IP而不是我的代理服務器。

似乎在第一次執行像「gsutil -d ls」這樣的簡單命令時,它會使用我的代理設置爲第一個POST指定.boto,然後切換回嘗試直接路由到Google而不是我的代理服務器。

然後,如果我CTRL-C並重新運行完全相同的命令,代理設置不再使用。這種行爲上的差異讓我感到困惑。如果我等待足夠長的時間,我認爲它會再次適用於最初的請求,所以這表明緩存正在發生。我不是100%的這種行爲,因爲我還沒有能夠預測它何時發生。

我也注意到它總是首先嚐試連接到端口80上的169.254.169.254,無論代理設置如何。 grep顯示它被硬編碼到oauth2_client.py,test_utils.py,layer1.py和utils.py(在gsutils根目錄的不同子目錄下)。

我已經嘗試設置http_proxy環境變量,但它似乎有代碼,它取消設置。

+0

更深入地讀取我的調試輸出(gsutils -d ls)我注意到它在我的/ tmp /文件夾中創建了一個oauth緩存文件。如果我刪除該文件並重新運行「gsutils -d ls」,那麼它將使用POST/o/oath2/token的代理設置,接收響應(因爲它使用了代理),但當它繼續發出GET請求,代理不再使用(通過觀看tcpdump驗證),因此它將繼續重試並報告「捕獲的套接字錯誤,重試:[Errno 101]網絡無法訪問」(與OP的錯誤略有不同) – alnedey

1

昨天剛剛合併成github的修改了一些代理支持。請嘗試一下,或者具體而言,覆蓋此文件與您當前的副本:

https://github.com/GoogleCloudPlatform/gsutil/blob/master/gslib/util.py

+0

WOW!謝謝!我會嘗試它! –

+0

不,它沒有改變任何東西:( –

+0

如果你運行「gstuil -d ls」,它是否也會觸發相同的錯誤?另外,在該輸出中,是否顯示「proxy:」行? – alnedey