Вихід сценарію wget ненормально з помилкою 126


0

Здається, цей сценарій не запускається, у мене є доступ користувача до даних, які я намагаюся завантажити, але він просто не запуститься. Якщо хтось може допомогти зі скриптами 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

ви впевнені, що маєте потрібний дозвіл? помилка 126виникає, коли є проблема дозволу або команда не виконується.
Суфіян Горі

Відповіді:


1

Як заявив Суфіян Горі, помилка, яку ви отримуєте, вказує на те, що ви намагаєтесь виконати те, на що у вас немає дозволів на виконання.

Ось декілька речей, які варто подивитися та спробувати:

  • Подивіться, який 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немає, це означає, що ви не маєте дозволу на запуск цієї програми. Перевірте, чи є в системі інше місце розташування з wget locate bin/wget; як root run chmod a+x /path/to/wget.

  • Якщо type wgetкоманда повертає щось інше, починаючи з:

    wget is a function ...

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

    Тоді псевдонім або функція можуть бути проблемою. використовувати unalias wgetабо unset wgetочистити їх, або просто оновити свій скрипт, щоб використовувати повний шлях до wget ( which wgetповинен дати вам шлях до виконуваного файлу wget).

  • Якщо у вас немає дозволів на виправлення проблеми, ви можете замінити команду curl для wget - вона буде функціонувати однаково, аргументи просто різні.

  • Останнє, на що слід звернути увагу. На терміналі введіть наступне, щоб отримати баш для повторної інформації багатослівної.

    set -x

    У вашій команді змініть -qна а, -S -v -dщоб отримати детальну інформацію від wget. Запустіть команду і перегляньте результат - там може бути підказка.

    Використовуйте set +xдля вимкнення лунаючої команди

Оновлення

  • Щодо Вашого коментаря: У цій команді має бути пробіл:

    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

2-е оновлення:

Який вихід echo $PATH

Чи спрацювало це, коли ви використовували / usr / bin / wget?

Введіть export PATH="/usr/bin:$PATH"

А потім перевірте, чи працюють wget та інші команди.


Я спробував вище, і отримую таку type wget wget is /usr/bin/wget ls -l /path/to/wget bash: ls-l: command not found команду Псевдонім / unset не допомагає.
AraZeph

У цій команді має бути пробіл: ls -l /usr/bin/wget<br> Що станеться, якщо ви введете текст /usr/bin/wget? Також спробуйте ввести curlбез жодних аргументів (це нічого не зробить), щоб побачити, чи правильно воно виконується.
Аргонавти
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.