# pipe – read output from a command

- Synopsis

- Parameters

- Notes

- Examples

- Return Values

- Status

## Synopsis

- Run a command and return the output.

## Parameters

Parameter | Choices/Defaults | Configuration | Comments
--- | --- | --- | ---
_terms - / required |  |  | command(s) to run.

## Notes

Note

- Like all lookups this runs on the Ansible controller and is unaffected by other keywords, such as become, so if you need to different permissions you must change the command or run Ansible as another user.

- Alternatively you can use a shell/command task that runs against localhost and registers the result.

- Pipe lookup internally invokes Popen with shell=True (this is required and intentional). This type of invocation is considered as security issue if appropriate care is not taken to sanitize any user provided or variable input. It is strongly recommended to pass user input or variable input via quote filter before using with pipe lookup. See example section for this. Read more about this Bandit B602 docs

## Examples

    - name: raw result of running date command"
      debug:
        msg: "{{ lookup('pipe', 'date') }}"

    - name: Always use quote filter to make sure your variables are safe to use with shell
      debug:
        msg: "{{ lookup('pipe', 'getent ' + myuser | quote ) }}"

## Return Values

Common return values are documented here, the following are the fields unique to this lookup:

Key | Returned | Description
--- | --- | ---
_string - |  | stdout from command

## Status

- This lookup is not guaranteed to have a backwards compatible interface. [preview]

- This lookup is maintained by the Ansible Community. [community]

### Authors

- Daniel Hokka Zakrisson <daniel@hozac.com>

Hint

If you notice any issues in this documentation, you can edit this document to improve it.

Hint

Configuration entries for each entry type have a low to high priority order. For example, a variable that is lower in the list will override a variable that is higher up.