wget 脚本异常退出,错误 126

wget 脚本异常退出,错误 126

似乎无法运行此脚本,我有尝试下载的数据的用户访问权限,但它就是无法运行。如果有人能帮助使用 wget 脚本,我将不胜感激。

for i in $(seq 1 9); do wget -q --http-user="xxxxxx" --http-passwd="xxxxxx" http://cdaac-www.cosmic.ucar.edu/cdaac/rest/tarservice/data/cosmic2015/atmPrf/2015.00$i -O cosmic_atmPrf_2015.00$i.tar; done

答案1

正如 Sufiyan Ghori 所说,您收到的错误表明您正在尝试执行您没有权限执行的操作。

以下是一些值得关注和尝试的事情:

  • 查看你正在使用哪个 wget 并检查权限(使用第一个命令的结果作为第二个命令的参数如果参数是一条路径)

    type wget
    ls -l /path/to/wget

    你应该得到如下结果:

    $ type wget
    /usr/bin/wget
    $ ls -l /usr/bin/wget
    -rwxr-xr-x 1 root root 439944 May 4 17:07 /usr/bin/wget

    如果最后一个x-rwxr-xr-x存在,则表示您无权运行该程序。通过locate bin/wget以 root 身份运行 ;来查看系统上是否存在 wget 的不同位置chmod a+x /path/to/wget

  • 如果type wget命令返回其他内容,则从以下内容开始:

    wget is a function ...

    wget is aliased to 'e1(){ return 126;};e1;'

    那么别名或函数可能是问题所在。使用unalias wgetunset wget清除它们,或者只更新你的脚本以使用 wget 的完整路径(which wget应该为你提供 wget 可执行文件的路径)。

  • 如果您没有权限修复该问题,您可以用 curl 命令代替 wget - 它的功能相同,只是参数不同。

  • 最后要看的一件事。在终端上,键入以下内容以使 bash 回显详细信息。

    set -x

    在您的命令中,将 更改-q为 a-S -v -d以从 wget 获取详细信息。运行该命令并查看输出 - 那里可能有线索。

    用于set +x关闭 bash 命令回显

更新

  • 关于您的评论:该命令中需要有一个空格:

    ls -l /usr/bin/wget

  • 如果你输入 /usr/bin/wget 会发生什么?还可以尝试输入不带任何参数的 curl(它不会执行任何操作),看看它是否正确执行。

  • 使用以下输出更新您的原始问题:

    • ls -l /usr/bin/wget
    • 运行“set -x”,然后运行
      wget -S -v -d --http-user="xxxxxx" --http-passwd="xxxxxx" http://cdaac-www.cosmic.ucar.edu/cdaac/rest/tarservice/data/cosmic2015/atmPrf/2015.001 -O cosmic_atmPrf_2015.001.tar
      确保混淆您的用户名/密码,但除此之外请显示完整的响应。
    • 然后尝试同样的事情,但 set -x 仍然有效,但使用以下命令将 wget 替换为 curl。将用户名和密码替换为正确的 - 删除 < > 并确保:它们之间有,例如 -u argonauts:argonautspw

      curl -v -u <username>:<password> http://cdaac-www.cosmic.ucar.edu/cdaac/rest/tarservice/data/cosmic2015/atmPrf/2015.001 -o cosmic_atmPrf_2015.001.tar

第二次更新:

输出是什么echo $PATH

当您使用 /usr/bin/wget 时它有效吗?

进入 export PATH="/usr/bin:$PATH"

然后检查 wget 和其他命令是否有效。

相关内容