o nnh @sLddlmZdZdZdZddlZddlmZddlm Z Gdd d e Z dS) ) annotationsa name: pipe author: Daniel Hokka Zakrisson (!UNKNOWN) version_added: "0.9" short_description: read output from a command description: - Run a command and return the output. options: _terms: description: command(s) to run. required: True notes: - 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 a 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 L(Bandit B602 docs,https://bandit.readthedocs.io/en/latest/plugins/b602_subprocess_popen_with_shell_equals_true.html) - The directory of the play is used as the current working directory. aB - name: raw result of running date command ansible.builtin.debug: msg: "{{ lookup('ansible.builtin.pipe', 'date') }}" - name: Always use quote filter to make sure your variables are safe to use with shell ansible.builtin.debug: msg: "{{ lookup('ansible.builtin.pipe', 'getent passwd ' + myuser | quote ) }}" zZ _string: description: - stdout from command type: list elements: str N) AnsibleError) LookupBasec@seZdZddZdS) LookupModulec Kstg}|D]3}t|}tj||jdtjtjd}|\}}|jdkr/|| d qt d||jf|S)NT)cwdshellstdinstdoutrzutf-8z"lookup_plugin.pipe(%s) returned %d) str subprocessPopen_loader get_basedirPIPE communicate returncodeappenddecoderstripr) selfterms variableskwargsrettermpr stderrrF/usr/local/lib/python3.10/dist-packages/ansible/plugins/lookup/pipe.pyrun7s  zLookupModule.runN)__name__ __module__ __qualname__rrrrrr5s r) __future__r DOCUMENTATIONEXAMPLESRETURNr ansible.errorsransible.plugins.lookuprrrrrrs