как загрузить файл ЧЕРЕЗ wget, в то время как целевой путь включает подстановочные знаки

#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