Не получается запустить этот скрипт, у меня есть доступ пользователей к данным, которые я пытаюсь загрузить, но он просто не запускается. Если кто-то может помочь со скриптами 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 ответ1

2

Как заявил Суфиан Гори, ошибка, которую вы получаете, указывает на то, что вы пытаетесь выполнить то, что у вас нет прав на выполнение.

Вот несколько вещей, которые стоит посмотреть и попробовать:

  • Посмотрите, какой 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 запустите 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).

  • Если у вас нет прав для устранения проблемы, вы можете заменить команду wlt завитком - он будет функционировать одинаково, аргументы просто разные.

  • И последнее, на что нужно посмотреть. На терминале введите следующее, чтобы получить bash для вывода подробной информации.

    set -x

    В вашей команде измените -q на -S -v -d чтобы получить подробную информацию от wget. Запустите команду и просмотрите вывод - там может быть подсказка.

    Используйте set +x чтобы отключить отображение команды bashing

Обновить

  • Что касается вашего комментария: в этой команде должен быть пробел:

    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 и другие команды.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .