Как получить время и размер модификации удаленного файла из сценария оболочки?

Unix(под торговой маркой UNIX )представляет собой семейство многозадачных многопользовательских компьютерных операционных систем, происходящих от оригинальной Unix AT&T. Разработка началась в 1969 году и была объявлена ​​за пределами Bell Abs в октябре 1973 года.

Linuxпредставляет собой Unix -подобную компьютерную операционную систему, созданную по модели разработки и распространения бесплатного программного обеспечения с открытым -исходным кодом. Определяющим компонентом Linux является ядро ​​Linux, ядро ​​операционной системы, впервые выпущенное 17 сентября 1991 года Линусом Торвальдсом.

Linux поставляется в форме, известной как дистрибутив Linux (или сокращенно дистрибутив ), предназначенный как для настольных компьютеров, так и для серверов. Одними из самых популярных и основных дистрибутивов Linux являются Arch Linux, CentOS, Debian , Fedora, Gentoo Linux, Linux Mint, Mageia, openSUSE и Ubuntu, а также коммерческие дистрибутивы, такие как Red Hat Enterprise Linux

.

GNU— операционная система и обширный набор компьютерного программного обеспечения. GNU полностью состоит из свободного программного обеспечения, большая часть которого распространяется под собственной лицензией GPL проекта GNU. GNU — это рекурсивная аббревиатура от «GNU's Not Unix!», выбранная потому, что дизайн GNU похож на Unix -, но отличается от Unix тем, что является свободным программным обеспечением и не содержит кода Unix. Разработка операционной системы GNU была инициирована Ричардом Столлманом, когда он работал в Массачусетском технологическом институте (Массачусетского технологического института )Лаборатории искусственного интеллекта в 1983 году.

подробнее

0
28.09.2019, 16:32
1 ответ

Это вернет информацию о файле, которую вы можете получить из заголовка:

curl --head http://speedtest.newark.linode.com/100MB-newark.bin

Он вернется:

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 28 Sep 2019 12:47:03 GMT
Content-Type: application/octet-stream
Content-Length: 104857600
Last-Modified: Thu, 01 Aug 2019 16:35:25 GMT
Connection: keep-alive
ETag: "5d4314cd-6400000"
Accept-Ranges: bytes

Если это то, что вам нужно, вы можете написать сценарий bash для создания файла таблицы/html с этой информацией.

Вы можете использовать это в таком скрипте:

#!/bin/sh

cat  << EOF
<table>
    <thead>
        <tr>
            <th>ver</th>
            <th>link</th>
            <th>modified</th>
            <th>size</th>
        </tr>
    </thead>
    <tbody>
EOF

$i=1

cat urls.list | while read url
do
        file_info=$(curl -s --head "$url")
        last_modified=$(echo "$file_info" | grep Last-Modified | cut -c16- | tr -d '\r\n')
        content_length=$(echo "$file_info" | grep Content-Length | cut -c17- | tr -d '\r\n')

cat  << EOF
        <tr>
            <td>1.0.$i</td>
            <td><a href="$url">download</a></td>
            <td>$last_modified</td>
            <td>$content_length</td>
        </tr>
EOF
let "i++"
done

cat << EOF
    </tbody>
</table>
EOF

Вам необходимо создать файл с именем urls.list, который должен содержать по одному URL-адресу в каждой строке. Вот так:

http://speedtest.newark.linode.com/100MB-newark.bin
http://speedtest.tokyo2.linode.com/100MB-tokyo2.bin

Запуск сценария приведет к такому результату:

<table>
    <thead>
        <tr>
            <th>ver</th>
            <th>link</th>
            <th>modified</th>
            <th>size</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>1.0.1</td>
            <td><a href="http://speedtest.newark.linode.com/100MB-newark.bin">download</a></td>
            <td>Thu, 01 Aug 2019 16:35:25 GMT</td>
            <td>104857600</td>
        </tr>
    </tbody>
</table>

Если вам нужно конкретное имя версии, вы можете сохранить его в файле списка с разделителем (, например.:version name|url). И нужно будет немного изменить код. Теперь он просто следует порядку списка URL-адресов.

1
28.01.2020, 02:39

Теги

Похожие вопросы