Как проверить контрольную сумму, используя одну командную строку?

Только для вас я играл с Veracrypt (никогда раньше не слышал этого названия: D).

Вы отформатировали диск как FAT? Тогда это твоя проблема. Когда Veracrypt спросит вас, отформатируйте его как NTFS вместо FAT и попробуйте снова.

FAT32, к сожалению, не поддерживает владельца, разрешения или символические ссылки. Вот почему вы получаете сообщение об ошибке Операция запрещена . Обратите внимание, что эта ошибка не является «в разрешении отказано»: «операция не разрешена» часто означает «операция не поддерживается», т.е. никто не может этого сделать.

2
22.08.2018, 13:56
5 ответов

Q1: I'd like to know how to do this using a command that does not require copy and pasting of the first output's checksum (if it's possible).

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

Q2: I'd like to know the simplest way to do this using a command that does require copy and pasting of the first output's checksum. (Simply attempting to use grep on a double‐quoted pasted checksum (i.e., as a string) doesn't work.)

Таким образом, единственным вариантом здесь является копирование/вставка вывода предыдущей команды. Что касается того, почему это не сработало для вас, когда вы попытались это сделать. Вероятно, это не удалось, потому что при использовании echo <sha1sum>вы ввели дополнительный символ, символ новой строки (\n), который изменил строку контрольной суммы.

При выводе строк в любую из хеш-функций, таких как md5или sha256sum, обычно лучше всего использовать echo -n <..>, который сообщает echoопустить добавление новой строки в конце строки.

Вы можете видеть, как это может повлиять на любые вызовы хэш-функции, например:

$ echo "blah" | sha256sum
41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3  -

$ echo -n "blah" | sha256sum
8b7df143d91c716ecfa5fc1730022f6b421b05cedee8fd52b1fc65a96030ad52  -

Истинный хэш строки 'blah' является вторым вызовом.

3
27.01.2020, 21:58

Похоже, вы проверяете совпадения. Рассматривали ли вы вариант-c(--check)для sha256sum?

2
27.01.2020, 21:58

Вы можете создать простую функцию в конфигурации .bashrcили .zshrcи запустить ее следующим образом:

sha256 <expected-sha-256-sum> <name-of-the-file>

Он сравнивает ожидаемую сумму sha256 с фактической в ​​одной команде.

Функция:

sha256() {
    echo "$1 $2" | sha256sum --check
}

Подробную информацию можно найти здесь .

10
27.01.2020, 21:58

Хорошая идея, @Sasha. Ребята, обратите внимание, что вам нужно поставить два пробела между $1 и $2.

sha256() { echo "$1  $2"|sha256sum -c; }

Для однократного решения можно использовать:

echo "<expected-sha-256-sum>  <name-of-the-file>" | sha256sum -c 

Опять же, важно иметь два пробела между «ожидаемая -ша -256 -сумма» и «имя -из -файла -».

2
27.01.2020, 21:58

Вы можете сделать это в одну строку следующим образом:

В Linux:

check=$(sha256sum -b linuxmint-20.2-cinnamon-64bit.iso); check_escaped_space=$(echo $check | sed 's/ / \\/'); grep $check_escaped_space mint_sha256sum.txt -n

На Mac:

check=$(shasum -a 256 -b linuxmint-20.2-cinnamon-64bit.iso); check_escaped_space=$(echo $check | sed 's/ / \\/'); grep $check_escaped_space mint_sha256sum.txt -n

Я использовал mint _sha256sum.txt в качестве файла правильных хэшей для проверки, как они приведены дляhttps://linuxmint.com/edition.php?id=288здесь https://ftp.heanet.ie/mirrors/linuxmint.com/stable/20.2/sha256sum.txt, это должно дать результат

2:50b833f1f093c029bfb7ba6148c9ce96619c01a83e92f35287983fbd62f26b01 *linuxmint-20.2-cinnamon-64bit.iso

, что указывает на то, что он соответствует строке 2 в файле.txt.

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

На веб-сайте , с которого вы скачивали, написано, что нужно проверять вот так:

Линукс:

echo "50b833f1f093c029bfb7ba6148c9ce96619c01a83e92f35287983fbd62f26b01 *linuxmint-20.2-cinnamon-64bit.iso" | sha256sum --check

Мак:

echo "50b833f1f093c029bfb7ba6148c9ce96619c01a83e92f35287983fbd62f26b01 *linuxmint-20.2-cinnamon-64bit.iso" | shasum -a 256 --check
0
04.11.2021, 11:04

Теги

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