summaryrefslogtreecommitdiffstats
path: root/sbin/calcrollmd5
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/calcrollmd5')
-rwxr-xr-xsbin/calcrollmd549
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')