455 % (self.shell, self.envs, cwd, self.bufsize, \ |
455 % (self.shell, self.envs, cwd, self.bufsize, \ |
456 self.get_pipe("stdin", 'r'),self.get_pipe("stdout"), self.get_pipe("stderr"))) |
456 self.get_pipe("stdin", 'r'),self.get_pipe("stdout"), self.get_pipe("stderr"))) |
457 pid = subprocess.Popen(command_str, shell=self.shell, env=env_dict, cwd=cwd,\ |
457 pid = subprocess.Popen(command_str, shell=self.shell, env=env_dict, cwd=cwd,\ |
458 bufsize=self.bufsize, stdin = self.get_pipe("stdin", 'r'),\ |
458 bufsize=self.bufsize, stdin = self.get_pipe("stdin", 'r'),\ |
459 stdout = self.get_pipe("stdout"), stderr = self.get_pipe("stderr")) |
459 stdout = self.get_pipe("stdout"), stderr = self.get_pipe("stderr")) |
|
460 |
|
461 #log stdout and stderr to logger |
|
462 stdout_value, stderr_value = pid.communicate() |
|
463 if stdout_value != None: self.logger.info("stdout: %s" % stdout_value) |
|
464 if stderr_value != None: self.logger.warning("stderr: %s" % stderr_value) |
|
465 |
460 #Waiting for process to complete |
466 #Waiting for process to complete |
461 retcode = pid.wait() |
467 retcode = pid.wait() |
|
468 |
462 #Storing stream information for possible further processing. |
469 #Storing stream information for possible further processing. |
463 self.set_streams(pid.stdin, pid.stdout, pid.stderr) |
470 self.set_streams(pid.stdin, pid.stdout, pid.stderr) |
464 |
471 |
465 if retcode < 0: |
472 if retcode < 0: |
466 self.logger.error("Child was terminated by signal %s" % (-retcode)) |
473 self.logger.error("Child was terminated by signal %s" % (-retcode)) |