Как автоматизировать процесс проверки Ubuntu ISO SHA256sum

Hm, я бы оставил 1 или 2 ядра в установленных системах. Это почти невозможно, но может быть, что при обновлении новейшее ядро ​​получает неправильный характер. Таким образом, можно было бы вернуться затем через следующее установленное ядро ​​в систему.

Я говорю об этом не из-за Ubuntu, а из других дистрибутивов, где иногда обновления каким-то образом искажают установку. Ubuntu достаточно безопасен и достаточно надежен при обновлении файлов. Он относится только к осторожному пользователю или администратору, чтобы позволить себе дополнительный аварийный режим для своей системы, кроме защищенного режима.

1
задан 20 December 2016 в 01:28

2 ответа

Официальная страница, содержащая хеши MD5 для Ubuntu, Kubuntu, Edubuntu Xubuntu и Lubuntu:

https://help.ubuntu.com/community/UbuntuHashes

Выберите соответствующий дистрибутива и нажмите на файл MD5SUMS.

Теперь проверьте свою загрузку ISO:

md5sum ubuntu-*.iso

Сравните хэш (буквенно-цифровую строку слева), которую ваша машина вычислила с соответствующим хешем страница https://help.ubuntu.com/community/UbuntuHashes .

Полуавтоматический метод

Ubuntu распространяет хеши MD5 в файле, называемом MD5SUMS в нижней части страницы загрузки для вашего выпуска http://releases.ubuntu.com.

Сначала загрузите файл MD5SUMS в тот же каталог, что и iso. Затем запустите в терминале следующее:

cd download_directory

md5sum -c MD5SUMS

md5sum создаст кучу предупреждений. Не беспокойтесь: сообщение ОК будет похоронено где-то в нем!

В этом случае сообщение, которое вы хотите, находится на седьмой строке.

ubuntu-*.iso: OK
2
ответ дан 23 May 2018 в 19:40

Для этой конкретной задачи я написал собственный скрипт Python. Это предназначено для изображений iso, которые могут быть загружены с помощью изображений iso, предоставленных на http://cdimage.ubuntu.com, но содержимое этого сайта точно такое же, как и то, что вы используете http://releases.ubuntu.com/, поэтому он будет работать для обоих. На обоих сайтах есть файл SHA256SUMS, который мы будем проверять. Основная предпосылка этого скрипта -

скачать iso рассчитать iso's sha256sum загрузить файл SHA256SUM с той же страницы Сравнить то, что мы вычислили с тем, что находится в файле

Источник скрипта Код

Этот скрипт также доступен на моем http://cdimage.ubuntu.com , который, возможно, никогда не имеет функций.

#!/usr/bin/env python3
# Script for automatically downloading and verifying sha256 hashsum
# of iso images provided by http://cdimage.ubuntu.com
import urllib.request
import sys
import os
from hashlib import sha256

def download_file(url):
    print(">>> Retrieving ",url)
    save_as = url.split('/')[-1]
    buffer_size=512
    try:
        with urllib.request.urlopen(url) as response, open(save_as,'wb') as out_file:
            print(response.info())
            print(">>> Writing data:")
            has_data=True
            retrieved = 0
            while has_data:
                 data = response.read(buffer_size)
                 retrieved += len(data)
                 # simple progress message which overwrites itself
                 message = "Retrieved "+str(retrieved)+" bytes"
                 print("\r"+" "*len(message)+"\r",end="")
                 print(message,end="")
                 sys.stdout.flush()
                 if data:
                     out_file.write(data)
                 else:
                    has_data=False
    except Exception as e:
        sys.stderr.write('\n>>> Something went wrong\n')
        sys.stderr.write(str(e))
    else:
        print('\n>>> URL retrieved successfully')
        return(save_as)

def get_sha256sum(file_path):
    sha256sum = sha256()
    with open(file_path, 'rb') as fd:
        data_chunk = fd.read(1024)
        while data_chunk:
              sha256sum.update(data_chunk)
              data_chunk = fd.read(1024)
    return str(sha256sum.hexdigest())

def compare_sha256sums(local_file,sha256sum,hashsum_file):
     remote_hashsum = ""
     with open(hashsum_file) as fd:
         for line in fd:
              words = line.strip().split()
              if words[1].replace('*','') == local_file:
                  remote_hashsum = words[0]
         if not remote_hashsum: 
              sys.stderr.write("\n>>> Error: local file not found in list of SHA256SUMS\n")
              sys.exit(1)
     if remote_hashsum == sha256sum:
         print("Local file ",local_file," with sha256 hashsum ",sha256sum,"matches with sha256sum in remote. All OK.")


def main():
    saved_filename = download_file(sys.argv[1])
    sha256sum = get_sha256sum(saved_filename)
    sha256sums_file_url = "/".join( sys.argv[1].split('/')[:-1] + ['SHA256SUMS'] ) 
    sha256sum_file = download_file( sha256sums_file_url  ) 
    compare_sha256sums(saved_filename,sha256sum,sha256sum_file)

if __name__ == '__main__': main()

Test Run :

bash-4.3$ ./get_iso_and_verify.py  http://cdimage.ubuntu.com/releases/16.04.2/release/ubuntu-16.04.2-preinstalled-server-armhf+raspi2.img.xz
>>> Retrieving  http://cdimage.ubuntu.com/releases/16.04.2/release/ubuntu-16.04.2-preinstalled-server-armhf+raspi2.img.xz
Date: Fri, 07 Jul 2017 21:55:20 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Thu, 16 Feb 2017 20:16:12 GMT
ETag: "ee62708-548ab77ea3b00"
Accept-Ranges: bytes
Content-Length: 249964296
Connection: close
Content-Type: application/x-xz


>>> Writing data:
Retrieved 249964296 bytes
>>> URL retrieved successfully
>>> Retrieving  http://cdimage.ubuntu.com/releases/16.04.2/release/SHA256SUMS
Date: Fri, 07 Jul 2017 22:09:47 GMT
Server: Apache/2.4.18 (Ubuntu)
Last-Modified: Fri, 17 Feb 2017 00:06:46 GMT
ETag: "205-548aeb07c5180"
Accept-Ranges: bytes
Content-Length: 517
Connection: close


>>> Writing data:
Retrieved 517 bytes
>>> URL retrieved successfully
Local file  ubuntu-16.04.2-preinstalled-server-armhf+raspi2.img.xz  with sha256 hashsum  60156f9238360dc84267dbde4f334516d580fe540dd523d12d4837c4647d6d8f matches with sha256sum in remote. All OK.
bash-4.3$ cat SHA256SUMS 
60156f9238360dc84267dbde4f334516d580fe540dd523d12d4837c4647d6d8f *ubuntu-16.04.2-preinstalled-server-armhf+raspi2.img.xz
35c9a6b7536e41c19f18033ac5a9b095130d17848126160d6b66cbd09be48f17 *ubuntu-16.04.2-server-arm64.iso
a00d88107eebadf0dde86087ad746d372d33ebdd29ac5cd4fae42a2e031d2b8f *ubuntu-16.04.2-server-powerpc.iso
0a10bada74112c58412ac8778df05abbb69d5983b672e6bbe74fa794cf002a2a *ubuntu-16.04.2-server-ppc64el.iso
253fd0eb5e529c3434729f475c7855463ba87ed7dea4321182b54c5416523897 *ubuntu-16.04.2-server-s390x.iso
1
ответ дан 23 May 2018 в 19:40
  • 1
    Это старый вопрос, на который был написан ответ! ;-) – Paranoid Panda 8 July 2017 в 10:03
  • 2
    @ParanoidPanda Oldie, но goodie;) Кроме того, сегодня я делаю целую кучу shasum и развлекаюсь. – Sergiy Kolodyazhnyy 8 July 2017 в 10:09

Другие вопросы по тегам:

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