#bash #wildcard #wget #repo
Вопрос:
вот элегантный пример того, как загрузить файл и скопировать его в
/etc/yum.repo.d folder
пример
REPOSITORY_SERVER=master_machine01 wget -nd -r -P /etc/yum.repos.d/ -A ".repo" "http://$REPOSITORY_SERVER/ambari/centos7/2.6.2.2-1/ambari.repo"
после приведенной выше команды файл ambari.repo будет скопирован в /etc/yum.repos.d/
примечание: путь к файлу amabri.rep является
ls -ltr /var/www/html/ambari/centos7/2.6.2.2-1/ambari.repo -rw-r--r-- 1 root users 304 Jun 11 2018 /var/www/html/ambari/centos7/2.6.2.2-1/ambari.repo
так что это простой случай
теперь, как насчет пути, который может быть таким ( с разными путями )
$REPOSITORY_SERVER/ambari/centos7/2.6.2.3-1/ambari.repo
или
$REPOSITORY_SERVER/ambari/centos7/2.6.2.2-4/ambari.repo
тогда как использовать интерфейс командной строки с подстановочными знаками
мы пробуем следующее
wget -nd -r -P /etc/yum.repos.d/ -A ".repo" "http://$REPOSITORY_SERVER/ambari/centos7/*/ambari.repo"
но мы получаем
HTTP request sent, awaiting response... 404 Not Found 2021-11-28 18:40:07 ERROR 404: Not Found.
или даже с обратной косой чертой
wget -nd -r -P /etc/yum.repos.d/ -A ".repo" "http://$REPOSITORY_SERVER/ambari/centos7/*/ambari.repo"
НО С ТОЙ ЖЕ ОШИБКОЙ
есть идеи, как решить эту проблему?
Ответ №1:
как использовать интерфейс командной строки с подстановочными знаками
Невозможно выполнить расширение глобуса с помощью протокола HTTP. Это совершенно не связанные технологии.
как решить эту проблему?
Разработайте и реализуйте метод получения доступных файлов по определенному пути с HTTP-сервера. Например, обратитесь к администратору сервера и спросите его об этом. Потенциально, если HTTP-сервер поддерживает обслуживание списка каталогов, рекурсивно отфильтруйте список, чтобы найти все соответствующие пути. Или найдите и запросите какой-нибудь другой сайт, содержащий все ссылки, и отфильтруйте полученный ответ, например, для извлечения всех ссылок. И т.д.
Комментарии:
1. возможно , другой вариант wget, чтобы просмотреть имя папки в разделе — REPOSITORY_SERVER/ambari/centos7, а затем записать имя папки и задать его в переменной ( пример — http://$REPOSITORY_SERVER/ambari/centos7/$ВЕРСИЯ/ambari.repo
2. ДА,
if the HTTP server supports serving a directory listing, recursively filter the listing to find all matching paths