Fabric - Is there any way to capture run stdout?

fabric, python

Solution

Exactly what you are asking for should be happening. From the docs:

run will return the result of the remote program’s stdout as a single (likely multiline) string.

`run()`, and related commands like `local()` and `sudo()`, return an `_AttributeString` object that is just a wrapper around stdout with attribute access to additional information like failure/success booleans, stderr, the command run, etc. The result object also has a `stdout` attribute, which is just more explicit.

To troubleshoot, `print type(output), output` to be sure the response is what you expect. Examine `output.failed` and `output.stderr`. It could be the command isn't doing what you expect, there is no "backups" directory, etc.

Problem

I'm trying to do the following: ``` output = run("ls -l backups") for line in output.split("/n"): do_stuff(line) ``` Any way of having the `stdout` of `ls` sent to `output`? To be more specific: I'm using a CLI app called `s3cmd` which does something similar to `ls`, but with remote Amazon S3 buckets. So, a replacement for `ls` won't help, unfortunately.

Original source