#!/usr/bin/env python2.7 import sys import os import subprocess # assume in PATH MDC = 'mdc' GETFILE = 'getfile' def get_names(target): output = subprocess.check_output([MDC, target]) lines = output.split('\n')[11:-6] return [line[1:34].strip() for line in output.split('\n')[11:-6]] def call_extract(target, fname, result_path): print 'GETFILE', target, fname, result_path contents = subprocess.check_output([GETFILE, target, fname]) try: open(result_path, 'w').write(contents) except IOError: ### do something raise def run(target, target_dir='.'): fnames = get_names(target) for f in fnames: mapped = f.replace('/', '..').replace(':', '..') result_path = os.path.join(target_dir, mapped) call_extract(target, f, result_path) if __name__ == '__main__': if len(sys.argv) == 2: run(sys.argv[1], '.') elif len(sys.argv) == 3: run(sys.argv[1], sys.argv[2]) else: print 'USAGE: %s IMAGE [TARGET-DIR]' % os.path.basename(sys.arg[0]) sys.exit(1)