diff options
Diffstat (limited to 'sbin/calcrollmd5')
-rwxr-xr-x | sbin/calcrollmd5 | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/sbin/calcrollmd5 b/sbin/calcrollmd5 new file mode 100755 index 0000000..d6bcfe1 --- /dev/null +++ b/sbin/calcrollmd5 @@ -0,0 +1,49 @@ +#!/usr/bin/python +#coding:utf-8 + +import os +import sys +import hashlib + +def GetFileMD5(filename): + myhash = hashlib.md5() + with open(filename, 'rb') as f: + while True: + b = f.read(8096) + if not b: + break + myhash.update(b) + return myhash.hexdigest() + +def running(path): + rpmlist = [] + for root, dirs,files in os.walk(path): + if root.endswith("RedHat"): + (roll, version, arch) = root.split(os.path.sep)[-4:-1] + rollname = "%s/%s/%s" % (roll, version, arch) + rollvers = "%s-%s-%s" % (roll, version, arch) + + baseDirs = os.path.join(rollname, 'RedHat', 'RPMS') + for f in os.listdir(baseDirs): + rpmname = os.path.join(baseDirs, f) + md5sum = GetFileMD5(rpmname) + result = "%s %s %s" % (md5sum, rollvers, rpmname) + rpmlist.append(result) + + return rpmlist + +if __name__ == "__main__": + args = sys.argv + if len(args) < 2: + print " - Must to be supply an path." + sys.exit(0) + + path = args[1] + if os.path.isdir(path) and path != '/': + path = os.path.abspath(path) + rpmlist = running(path) + + rfile = os.path.join(path, 'rollslist') + with open(rfile, 'w') as f: + f.write('\n'.join(rpmlist)) + f.write('\n') |