linux - 从 S3 下载 Shell 脚本 wget - 禁止错误

标签 linux shell amazon-s3 wget

我正在尝试使用 shell 脚本和命令 wget 从 Amazon S3 下载文件。提示中的文件具有公共(public)权限,我可以使用标准浏览器下载它。到目前为止,这是我在脚本中的内容:

wget --no-check-certificate -P /tmp/soDownloads  https://s3-eu-west-1.amazonaws.com/myBucket/myFolder/myFile.so
cp /tmp/soDownloads/myFile.so /home/hadoop/lib/native

这个问题对我来说有点奇怪。虽然我可以直接从终端下载文件(只需输入 wget 命令),但当我尝试执行包含相同命令行的 shell 脚本时会弹出一个错误(脚本使用 >sh myScript 运行)。嘘).

--2014-06-26 07:33:57--  https://s3-eu-west-1.amazonaws.com/myBucket/myFolder/myFile.so%0D
Resolving s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)... XX.XXX.XX.XX
Connecting to s3-eu-west-1.amazonaws.com (s3-eu-west-1.amazonaws.com)|XX.XXX.XX.XX|:443... connected.
WARNING: cannot verify s3-eu-west-1.amazonaws.com's certificate, issued by     ‘/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3’:
Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 403 Forbidden
2014-06-26 07:33:57 ERROR 403: Forbidden.

现在,我知道这可能只是我这边的初学者错误,但我无法检测到任何拼写错误或任何类型的错误。如果您能为我提供解决此问题的任何帮助,我将不胜感激。

请注意,我想注意到我正在 Amazon Elastic MapReduce 框架提供的 EC2 实例中运行脚本,如果它与问题。

最佳答案

我怀疑你用来编写那个脚本的编辑给你留下了一个小“礼物”。

命令行不一样。仔细看:

--2014-06-26 07:33:57-- ... myFolder/myFile.so%0D
                                              ^^^ what's this about?

这是 ASCII CR 的 urlencoding,十进制 13 十六进制 0x0D。您在脚本中嵌入了一个不应该存在的回车符,wget 将其视为 URL 中的最后一个字符,并将其发送到 S3。

使用 less 实用程序或像 vi 这样的编辑器查看文件,这个杂散字符可能会显示为 ^M.. . 或者,如果它们遍布整个文件,当您使用 vi 打开它时,您应该会在屏幕底部看到它:

"foo" [dos] 1L, 5C    
      ^^^^^

如果你看到那个,那么在 vi...

:set ff=unix[enter] 
:x[enter]

...将转换行尾,并以可用格式保存文件,如果这确实是您遇到的问题。

如果您在 Windows 上编辑文件,您需要使用了解如何使用换行符而不是回车符保存文件的编辑器。

关于linux - 从 S3 下载 Shell 脚本 wget - 禁止错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24425020/

相关文章:

python - Amazon S3 boto3 如何遍历存储桶中的对象?

java - 无论如何在 Java 中显示一个类似于 TrayIcon.displayMessage() 的自定义表单?

python - 创建 Python 电子邮件(接收)服务器

linux - 通过 ssh 的 HG Workbench 工作目录?

linux - 为什么 `ls` 每行列出多个文件,而 `ls pipe/redirect` 每行只列出 1 个文件?

bash - 给开发者的 linux/bash 提示?

c - 在 Linux 中打开文件时什么时候应该使用 O_CLOEXEC?

javascript - 如何从 JavaScript 调用 shell 脚本?

go - S3 GetObject 返回内容但从正文中读取不会填充缓冲区

amazon-s3 - 使用 s3 连接和 s3 Hook 在 Airflow 上创建 boto3 s3 客户端