Home | History | Annotate | Download | only in tools
      1 #!/usr/bin/python
      2 """
      3 Program that calculates several hashes for a given CD image.
      4 
      5 @copyright: Red Hat 2008-2009
      6 """
      7 
      8 import os, sys, optparse, logging
      9 import common
     10 from autotest_lib.client.common_lib import logging_manager
     11 from autotest_lib.client.bin import utils
     12 from autotest_lib.client.virt import virt_utils
     13 
     14 
     15 if __name__ == "__main__":
     16     parser = optparse.OptionParser("usage: %prog [options] [filenames]")
     17     options, args = parser.parse_args()
     18 
     19     logging_manager.configure_logging(virt_utils.VirtLoggingConfig())
     20 
     21     if args:
     22         filenames = args
     23     else:
     24         parser.print_help()
     25         sys.exit(1)
     26 
     27     for filename in filenames:
     28         filename = os.path.abspath(filename)
     29 
     30         file_exists = os.path.isfile(filename)
     31         can_read_file = os.access(filename, os.R_OK)
     32         if not file_exists:
     33             logging.critical("File %s does not exist!", filename)
     34             continue
     35         if not can_read_file:
     36             logging.critical("File %s does not have read permissions!",
     37                              filename)
     38             continue
     39 
     40         logging.info("Hash values for file %s", os.path.basename(filename))
     41         logging.info("md5    (1m): %s", utils.hash_file(filename, 1024*1024,
     42                                                         method="md5"))
     43         logging.info("sha1   (1m): %s", utils.hash_file(filename, 1024*1024,
     44                                                         method="sha1"))
     45         logging.info("md5  (full): %s", utils.hash_file(filename, method="md5"))
     46         logging.info("sha1 (full): %s", utils.hash_file(filename,
     47                                                         method="sha1"))
     48         logging.info("")
     49