Загрузите последний файл с удаленного сервера, используя curl - PullRequest
0 голосов
/ 03 ноября 2019

Я могу успешно загрузить файл, используя следующую команду curl.

curl -u user:pass -k "https://website.com/remote/path/remotefile.zip" -o /local/path/file.zip

В идеале, я хотел бы автоматизировать это, получив программный файл последней версии. Возможно загружать более одного файла в день. Каждому файлу предшествует метка времени, и в каталоге есть несколько файлов.

Пример содержимого каталога и имен файлов:

20191102230243952_Appended-Constant_Filename.zip
20191103040135476_Appended-Constant_Filename.zip
20191103100132360_Appended-Constant_Filename.zip

Обновление из комментария @ FedonKadifeli. Если в каталог, содержащий файлы, поступает запрос, возвращается вывод HTML с перечислением файлов.

curl -u user:pass -k "https://website.com/remote/path"

Вывод HTML

[...]
<table>
    <tr>
        <td align="left">&nbsp;&nbsp;
            <a href="/remote/path/20191102230243952_Appended-Constant_Filename.zip"><tt>20191102230243952_Appended-Constant_Filename.zip</tt></a>
        </td>
        <td align="right"><tt>66.6 kb</tt></td>
        <td align="right"><tt>Sun, 03 Nov 2019 06:02:44 GMT</tt></td>
    </tr>
    <tr bgcolor="#eeeeee">
        <td align="left">&nbsp;&nbsp;
            <a href="/remote/path/20191103040135476_Appended-Constant_Filename.zip"><tt>20191103040135476_Appended-Constant_Filename.zip</tt></a>
        </td>
        <td align="right"><tt>66.6 kb</tt></td>
        <td align="right"><tt>Sun, 03 Nov 2019 12:01:35 GMT</tt></td>
    </tr>
    <tr>
        <td align="left">&nbsp;&nbsp;
            <a href="/remote/path/20191103100132360_Appended-Constant_Filename.zip"><tt>20191103100132360_Appended-Constant_Filename.zip</tt></a>
        </td>
        <td align="right"><tt>66.5 kb</tt></td>
        <td align="right"><tt>Sun, 03 Nov 2019 18:01:32 GMT</tt></td>
    </tr>
</table>
[...]

1 Ответ

0 голосов
/ 04 ноября 2019

Небольшой скрипт SED может извлечь имя файла из списка. Сортировка / голова получит самое последнее имя файла

P=https://website.com/remote/path
curl .. "$P/" > listing.txt
LATEST=$(sed -ne '/href=/{s@.*href=".*/\([0-9]\+_[^"]\+\).*@\1@p}' < listing.txt | sort -nr | head -1)
curl ... "$P/$LATEST"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...