gsutil工具中的代理设置

时间:2014-06-05 11:01:42

标签: google-cloud-storage

我使用gsutil工具从Google Storage下载档案。 我使用下一个CMD命令:

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文件中设置代理设置,但都无济于事。 有人遇到过这样的问题吗? 谢谢!

3 个答案:

答案 0 :(得分:2)

请参阅“我通过代理服务器连接,”我需要做什么?在https://developers.google.com/storage/docs/faq#troubleshooting

基本上,您需要在.boto文件中配置代理设置,并且您需要确保代理允许将流量发送到accounts.google.com以及* .storage.googleapis.com。

答案 1 :(得分:1)

昨天刚刚将一个更改合并到github中,修复了一些代理支持。请尝试使用当前副本覆盖此文件:

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

答案 2 :(得分:0)

我相信我在Linux(Ubuntu 12.04.4 LTS)和gsutils 4.2(今天下载)中忽略了代理设置时遇到了同样的问题。

我一直在主机上观看tcpdump,以确认gsutils正在尝试直接路由到Google IP而不是我的代理服务器。

似乎第一次执行一个简单的命令就像" gsutil -d ls"它将使用指定.boto的代理设置进行第一次POST,然后切换回尝试直接路由到Google而不是我的代理服务器。

然后,如果我按CTRL-C并重新运行完全相同的命令,则根本不再使用代理设置。这种行为上的差异让我感到困惑。如果我等待足够长的时间,我认为它将再次适用于初始请求,因此这表明存在一些关于缓存的形式。我还不是100%的这种行为,因为我还没能预测它何时发生。

我还注意到,无论代理设置如何,它总是首先尝试在端口80上连接到169.254.169.254。 grep显示它已硬编码到oauth2_client.py,test_utils.py,layer1.py和utils.py(在gsutils根目录的不同子目录下)。

我已尝试设置http_proxy环境变量,但似乎有代码取消设置。