Fabric
From charlesreid1
Basics
Edit a file called fabfile.py
and put some fab directives in there.
Hello World
def hello(): print("Hello world!")
To run this fabric directive, just say:
$ fab hello
and you'll see your message print out.
Hello X
Basic example of taking an argument:
def hello(name="world): print("Hello %s!" % name)
which you can call and pass an argument to like this:
$ fab hello:name=Joe
Running Commands
To run a command on a local machine, you can import the local
function from the Fabric API:
from fabric.api import local
Now you can call local functions by saying local('git pull')
or local('mkdir zzz')
.
from fabric.api import local def list(): local('/bin/ls -1')
and we can call it by saying
$ fab list
Capturing Output
If you want to use the output from a command, you can capture the output like so:
def list(): z = local('/bin/ls -1', capture=True)
In the case of /bin/ls -1
, we have a string containing the name of each file, separated by a newline character.
Combined with Python's splitline()
function, we can turn a list of files using ls
into a list of files in a Python list in just two lines:
from fabric.api import local def list(): rawoutput = local('/bin/ls -1', capture=True) ourlist = rawoutput.splitlines() print ourlist