def local(cmd, capture = True, shell = None): out_stream = subprocess.PIPE if capture else None err_stream = subprocess.PIPE if capture else None p = subprocess.Popen(cmd, shell = True, stdout = out_stream, stderr = err_stream, executable = shell) (stdout, stderr) = p.communicate() out = Storage() out.stdout = stdout.strip() if stdout else "" out.stderr = stderr.strip() if stdout else "" out.cmd = cmd out.failed = False out.return_code = p.returncode if p.returncode != 0: out.failed = True out.succeeded = not out.failed return out