wget script sai anormalmente com erro 126

0

Parece que não consigo executar este script, tenho acesso de usuário aos dados que estou tentando baixar, mas ele simplesmente não é executado. Se alguém puder ajudar com scripts do wget, será apreciado.

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
    
por AraZeph 26.05.2016 / 04:04

1 resposta

2

Como Sufiyan Ghori afirmou, o erro que você está recebendo indica que você está tentando executar algo que você não tem permissão para executar.

Aqui estão algumas coisas para analisar e tentar:

  • Veja qual wget você está usando e verifique as permissões (use o resultado do primeiro comando como argumento para o segundo se o argumento for um caminho)

    type wget
    ls -l /path/to/wget

    você deve obter algo assim:

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

    Se o último x em -rwxr-xr-x não estiver presente, significa que você não tem permissão para executar esse programa. Veja se há um local diferente com wget no sistema executando locate bin/wget ; como root run chmod a+x /path/to/wget .

  • Se o comando type wget retornar outra coisa, começando por:

    wget is a function ...

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

    Em seguida, o alias ou função pode ser o problema. use unalias wget ou unset wget para limpá-los ou apenas atualize seu script para usar o caminho completo para wget ( which wget deve fornecer o caminho para o executável wget).

  • Se você não tiver permissões para corrigir o problema, poderá substituir um comando curl pelo wget - ele funcionará da mesma forma, os argumentos são apenas diferentes.

  • Uma última coisa para olhar. No terminal, digite o seguinte para obter o bash para retornar informações detalhadas.

    set -x

    Em seu comando, altere o -q para um -S -v -d para obter informações detalhadas do wget. Execute o comando e revise a saída - pode haver uma pista lá.

    Use set +x para desativar o comando bashing que ecoa

Atualizar

  • Com relação ao seu comentário: É necessário haver um espaço nesse comando:

    ls -l /usr/bin/wget

  • O que acontece se você digitar / usr / bin / wget? Além disso, tente digitar curl sem nenhum argumento (ele não fará nada) apenas para ver se ele é executado corretamente.

  • Atualize sua pergunta original com a saída de:

    • ls -l /usr/bin/wget
    • executando 'set -x' e, em seguida, executando 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 - certificando-se de ofuscar seu nome de usuário / senha, mas caso contrário, mostre a resposta completa.
    • Tente a mesma coisa com set -x ainda em vigor, mas use o seguinte comando que substitui wget por curl. Substitua o nome de usuário e senha pelos nomes corretos - removendo o < > e verifique se você tem o : entre eles, por exemplo, -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

segunda atualização:

Qual é a saída de echo $PATH

Funcionou quando você usou / usr / bin / wget?

Digite export PATH="/usr/bin:$PATH"

E, em seguida, verifique se o wget e outros comandos funcionam.

    
por 26.05.2016 / 05:03

Tags