Thin facade atop fabric
A façade atop fabric2
I have revisited Fabric (September 2018) to find it can handle multiple threads and multiple connections! This is great news: it makes all my automation faster!
Like with most APIs, I made a façade because Fabric is not congruent to my own programming conventions. This is not bad, just different: The domain I work in is slightly different than what the Fabric developers expect.
Here are the differences:
strerrfrom the remote machine is annotated, and shunted, to the local logging module.
- A few convenience methods are added:
conn.exists(path)- to test if a remote file exists
with conn.warn_only():- context manager if you do not care if your commands fail
get(remote, local, use_sudo=False)- allows you to use tilde (
~) on Windows to refer to home directory
put(local, remote, use_sudo=False)- similar to
get, except copies files to remote
sudo(command)works with the
Result.__contains__()so checking for patterns in command output is simpler:
result = conn.run("ls /data1", warn=True) not_found = "No` such file or directory" in result
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.