| #!/usr/bin/env python |
| |
| from argparse import ArgumentParser |
| from hashlib import sha512 |
| from logging import basicConfig, DEBUG |
| from pathlib import Path |
| from sys import argv, exit |
| |
| |
| argparser = ArgumentParser( |
| description="sha512sum replacement if coreutils isn't installed" |
| ) |
| argparser.add_argument("-c", "--check", type=Path, required=True) |
| |
| if __name__ == "__main__": |
| basicConfig(level=DEBUG) |
| args = argparser.parse_args() |
| errors = 0 |
| with open(str(args.check.resolve()), "rt") as f: |
| for line in f: |
| expected_hash, filename = line.rstrip("\r\n").split(" ", 1) |
| with open(str(Path(filename).resolve()), "rb") as f: |
| actual_hash = sha512(f.read()).hexdigest() |
| |
| if expected_hash == actual_hash: |
| print(filename + ": OK") |
| else: |
| errors += 1 |
| print(filename + ": FAILED") |
| |
| if errors: |
| print("%s: WARNING: %s computed checksum did NOT match" % (argv[0], errors)) |
| exit(1) |
| else: |
| exit(0) |