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