<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_command( command, input_data=None, out_pipe=subprocess.PIPE, err_pipe=subprocess.PIPE, env=None, **kwargs ):
 """ Runs a command non-interactively Args: command(list of str):
 args of the command to execute, including the command itself as command[0] as `['ls', '-l']` input_data(str):
 If passed, will feed that data to the subprocess through stdin out_pipe(int or file):
 File descriptor as passed to :ref:subprocess.Popen to use as stdout err_pipe(int or file):
 File descriptor as passed to :ref:subprocess.Popen to use as stderr env(dict of str:str):
 If set, will use the given dict as env for the subprocess **kwargs: Any other keyword args passed will be passed to the :ref:subprocess.Popen call Returns: lago.utils.CommandStatus: result of the interactive execution """

    if env is None:
        env = os.environ.copy()

    with LogTask(
        'Run command: %s' % ' '.join('"%s"' % arg for arg in command),
        logger=LOGGER,
        level='debug',
    ) as task:
        command_result = _run_command(
            command=command,
            input_data=input_data,
            out_pipe=out_pipe,
            err_pipe=err_pipe,
            env=env,
            uuid=task.uuid,
            **kwargs
        )
        return command_result