【问题标题】:Wget in bash script with 406 Not Acceptable Errorbash 脚本中的 Wget 出现 406 Not Acceptable 错误
【发布时间】:2012-06-24 17:46:22
【问题描述】:

在我的 Centos 6.2 上,我有这个 bash 脚本:

[le_me]$ cat get.nb
#! /bin/bash
/usr/bin/wget -O /var/www/html/leFile.xml http://www.leSite.com/leFeed.xml    

[le_me]$ source getFeeds.nb
: command not found
--2012-06-22 12:46:18--  http://www.leSite.com/leFeed.xml%0D
Resolving www.leSite.com... 1.2.3.4
Connecting to www.leSite.com|1.2.3.4|:80... connected.
HTTP request sent, awaiting response... 406 Not Acceptable
2012-06-22 12:46:18 ERROR 406: Not Acceptable.

对我来说奇怪的是,当我运行这个命令时

/usr/bin/wget -O /var/www/html/leFile.xml http://www.leSite.com/leFeed.xml

在控制台中,一切正常,文件下载没有问题。

我在谷歌上搜索了一下,我注意到这个 %0D 应该是一个回车字符,我尝试在链接后添加另一个空格,如下所示:http://www.leSite.com/leFeed.xml[spaceChar]

我下载了文件,但我担心找不到命令输出并最终获取回车(我知道这是因为空间的原因,但现在至少我下载了我最初想要的文件):

[le_me]$ source get.nb
: command not found
--2012-06-22 13:05:26--  http://www.leSite.com/leFeed.xml
Resolving www.leSite.com... 2.17.249.51
Connecting to www.leSite.com|2.17.249.51|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 35671435 (34M) [application/atom+xml]
Saving to: “/var/www/html/leFile.xml”

100%[=================================>] 35,671,435  37.2M/s   in 0.9s

2012-06-22 13:05:27 (37.2 MB/s) - “/var/www/html/leFile.xml” saved [35671435/35671435]

--2012-06-22 13:05:27--  http://%0D/
Resolving \r... failed: Name or service not known.
wget: unable to resolve host address “\r”
FINISHED --2012-06-22 13:05:27--
Downloaded: 1 files, 34M in 0.9s (37.2 MB/s)

谁能解释一下这个问题?

【问题讨论】:

  • "--header=Accept application/xml" ?

标签: linux bash scripting centos


【解决方案1】:

您的脚本文件显然具有 DOS 样式的行,并且回车符被解释为命令行中的另一个字符。如果 URL 后面没有空格,则将其解释为 URL 的最后一个字符;如果有空格,则将其解释为单独的单字符参数。

您应该使用 UNIX 样式的行保存脚本文件。如何做到这一点取决于您的编辑器。

【讨论】:

  • 你是对的。我最初在 Windows 框中创建了一个文件,但后来在我的服务器上使用 VIM 对其进行了编辑,但似乎这仍然导致问题,所以我使用 VIM 直接在服务器上创建了一个新文件并输入了所有命令从一开始,现在一切正常。呸!谢谢!
  • 好收获。我自己多次遇到这个问题,结果总是误导:) PS。在 vim 中:打开文件,":set ff=unix" 然后 ":write"。
【解决方案2】:

我建议引用 URL。

/usr/bin/wget -O /var/www/html/leFile.xml 'http://www.leSite.com/leFeed.xml'

【讨论】:

  • 不幸的是,引用 URL 没有帮助
【解决方案3】:

: command not found

错误提示 http:// 部分有问题。根据经验,我在命令行中使用时总是引用这些 url。里面经常有 bash/shell 特殊字符。

在我的情况下,这个命令适用于我,没有 406 问题(有一些真实的 http 地址)。您应该复制/粘贴确切的地址。它可能包含导致它的某些东西。

【讨论】:

  • 不幸的是,引用 URL 没有帮助
【解决方案4】:

如果其他答案都不起作用,请尝试 wget 的替代方法

curl -o /var/www/html/leFile.xml 'http://www.leSite.com/leFeed.xml'

【讨论】:

    猜你喜欢
    • 2016-02-21
    • 2014-11-12
    • 2021-01-21
    • 2014-02-21
    • 1970-01-01
    • 2012-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多