명령줄을 사용하여 체크섬을 확인하는 방법은 무엇입니까?

명령줄을 사용하여 체크섬을 확인하는 방법은 무엇입니까?

다음 명령을 입력하고 실행한다고 가정해 보겠습니다.

sha256sum ubuntu-18.04.1-desktop-amd64.iso

지연 후 출력은 다음과 같습니다.

5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433  ubuntu-18.04.1-desktop-amd64.iso

그러다가 SHA-256 해시가 일치하는지 더 빨리 평가하려면 다음 명령을 입력해야 한다는 것을 깨달았습니다.

sha256sum ubuntu-18.04.1-desktop-amd64.iso | grep 5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433

체크섬을 다시 확인하는 명령을 사용하지 않고 sha256sum첫 번째 출력에서 ​​작업할 수 있는 방법이 있습니까(즉, 이로 인해 발생하는 지연을 방지)? 구체적으로:

  1. 다음 명령을 사용하여 이 작업을 수행하는 방법을 알고 싶습니다.확실히첫 번째 출력의 체크섬을 복사하여 붙여넣어야 합니다(가능한 경우).
  2. 다음 명령을 사용하여 이 작업을 수행하는 가장 쉬운 방법을 알고 싶습니다.하다첫 번째 출력의 체크섬을 복사하여 붙여넣어야 합니다. (그냥 grep큰따옴표(예: 문자열)로 체크섬을 붙여넣으 려고 하면 작동하지 않습니다.)

답변1

.bashrc또는 구성에서 간단한 함수를 생성 .zshrc하고 다음과 같이 실행할 수 있습니다.

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

단일 명령으로 예상되는 sha256 합계를 실제 합계와 비교합니다.

그 기능은 다음과 같습니다:

sha256() {
    printf '%s %s\n' "$1" "$2" | sha256sum --check
}

제발자세한 내용은 여기에서 확인하세요.

답변2

질문 1: (가능한 경우) 첫 번째 출력의 체크섬을 복사하여 붙여 넣을 필요가 없는 명령으로 이 작업을 수행하는 방법을 알고 싶습니다.

Bash이전에 실행한 명령의 출력을 호출하는 메커니즘은 제공되지 않습니다. 후속 명령에서 작업을 수행하려는 경우 이를 명시적으로 캡처해야 합니다.

질문 2: 첫 번째 출력의 체크섬을 복사하여 붙여넣어야 하는 명령을 사용하여 이 작업을 수행하는 가장 쉬운 방법을 알고 싶습니다. (큰따옴표(예: 문자열)로 붙여진 체크섬을 grep하려고 하면 작동하지 않습니다.)

따라서 여기서 유일한 옵션은 이전 명령의 출력을 복사하여 붙여넣는 것입니다. 시도해 볼 때 이것이 효과가 없는 이유에 대해 설명합니다. 를 사용할 때 체크섬 문자열을 변경하는 echo <sha1sum>개행 문자( )라는 추가 문자를 도입하기 때문에 이 작업이 실패할 수 있습니다.\n

문자열을 해시 함수(예: md5또는 ) 에 에코할 때 일반적 으로 문자열 끝에 추가되는 개행 문자를 무시하도록 지시하는 작업을 sha256sum수행하는 것이 가장 좋습니다 .echo -n <..>echo

다음과 같이 이것이 해시 함수 호출에 어떤 영향을 미치는지 확인할 수 있습니다.

$ echo "blah" | sha256sum
41af286dc0b172ed2f1ca934fd2278de4a1192302ffa07087cea2682e7d372e3  -

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

문자열 "blah"의 실제 해시는 두 번째 호출입니다.

답변3

일치 여부를 확인하고 있는 것 같습니다. -c( --check) 옵션 사용을 고려해 보셨나요 sha256sum?

답변4

@Sasha는 올바른 접근 방식을 가지고 있습니다. SHA256SUM왼쪽에 해시가 있고 오른쪽에 파일 경로가 있는 파일을 받은 경우 다음을 사용할 수 있습니다.

sha256sum --check SHA256SUM 2>/dev/null | grep 'OK'

그렇지 않은 경우 기록 보관을 위해 체크섬 파일을 생성/추가한 다음 해시를 계산하여 비교할 수 있습니다.

function checksums {
    echo "$3 $2" | tee -a SHA256SUMS
    "$1" --check SHA256SUMS 2>/dev/null | grep 'OK'
}

checksums sha256sum 'ubuntu-18.04.1-desktop-amd64.iso' '5748706937539418ee5707bd538c4f5eabae485d17aa49fb13ce2c9b70532433'

이렇게 하면 모든 파일과 해시에 대한 기록을 갖게 됩니다.

관련 정보