1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

add stdin argument to command module

fixes #14380
This commit is contained in:
Guillaume Coré 2017-04-07 13:28:35 +02:00 committed by Toshio Kuratomi
parent b7d99f43d5
commit 905c25559d
2 changed files with 38 additions and 1 deletions

View file

@ -49,6 +49,12 @@ options:
type: bool type: bool
default: 'yes' default: 'yes'
version_added: "1.8" version_added: "1.8"
stdin:
version_added: "2.4"
description:
- Set the stdin of the command directly to the specified value.
required: false
default: null
notes: notes:
- If you want to run a command through the shell (say you are using C(<), C(>), C(|), etc), you actually want the M(shell) module instead. - If you want to run a command through the shell (say you are using C(<), C(>), C(|), etc), you actually want the M(shell) module instead.
The C(command) module is much more secure as it's not affected by the user's environment. The C(command) module is much more secure as it's not affected by the user's environment.
@ -121,6 +127,7 @@ def main():
creates=dict(type='path'), creates=dict(type='path'),
removes=dict(type='path'), removes=dict(type='path'),
warn=dict(type='bool', default=True), warn=dict(type='bool', default=True),
stdin=dict(required=False),
) )
) )
@ -131,6 +138,7 @@ def main():
creates = module.params['creates'] creates = module.params['creates']
removes = module.params['removes'] removes = module.params['removes']
warn = module.params['warn'] warn = module.params['warn']
stdin = module.params['stdin']
if not shell and executable: if not shell and executable:
module.warn("As of Ansible 2.4, the parameter 'executable' is no longer supported with the 'command' module. Not using '%s'." % executable) module.warn("As of Ansible 2.4, the parameter 'executable' is no longer supported with the 'command' module. Not using '%s'." % executable)
@ -174,7 +182,7 @@ def main():
args = shlex.split(args) args = shlex.split(args)
startd = datetime.datetime.now() startd = datetime.datetime.now()
rc, out, err = module.run_command(args, executable=executable, use_unsafe_shell=shell, encoding=None) rc, out, err = module.run_command(args, executable=executable, use_unsafe_shell=shell, encoding=None, data=stdin)
endd = datetime.datetime.now() endd = datetime.datetime.now()
delta = endd - startd delta = endd - startd

View file

@ -121,6 +121,35 @@
that: that:
- "command_result4.changed != True" - "command_result4.changed != True"
- name: pass stdin to cat via command
command: "cat"
args:
stdin: 'foobar'
register: command_result5
- name: assert that stdin is passed
assert:
that:
- "command_result5.stdout == 'foobar'"
- name: send to stdin literal multiline block
command: "{{ sha1sum.stdout }}"
args:
stdin: |-
this is the first line
this is the second line
this line is after an empty line
this line is the last line
register: command_result6
- debug: var=command_result6
- name: assert the multiline input was passed correctly
assert:
that:
- "command_result6.stdout == '9cd0697c6a9ff6689f0afb9136fa62e0b3fee903 -'"
## ##
## shell ## shell
## ##