From 49807877fa4e69f6047efa4f7885a3d454a9d6eb Mon Sep 17 00:00:00 2001 From: James Tanner Date: Tue, 18 Mar 2014 12:21:26 -0400 Subject: [PATCH] Fixes #6550 Use shell for pipe lookup subprocess.popen calls --- lib/ansible/runner/lookup_plugins/pipe.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/ansible/runner/lookup_plugins/pipe.py b/lib/ansible/runner/lookup_plugins/pipe.py index 62ec7e129e..0cd9e1cda5 100644 --- a/lib/ansible/runner/lookup_plugins/pipe.py +++ b/lib/ansible/runner/lookup_plugins/pipe.py @@ -32,7 +32,18 @@ class LookupModule(object): ret = [] for term in terms: - p = subprocess.Popen(term, cwd=self.basedir, shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE) + ''' + http://docs.python.org/2/library/subprocess.html#popen-constructor + + The shell argument (which defaults to False) specifies whether to use the + shell as the program to execute. If shell is True, it is recommended to pass + args as a string rather than as a sequence + + https://github.com/ansible/ansible/issues/6550 + ''' + term = str(term) + + p = subprocess.Popen(term, cwd=self.basedir, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) (stdout, stderr) = p.communicate() if p.returncode == 0: ret.append(stdout.decode("utf-8").rstrip())