Have you ever written a Fabric script that work wonderfully well with remote hosts only to realise that it has a problem running locally? If that is the case, then env.host is your friend.
#! /usr/bin/env python # save this as smartfab.py from fabric.api import local from fabric.api import run from fabric.api import env def run_that_job(): """get some info about your host""" cmd = "uname -a" if env.host: run(cmd) else: local(cmd)
If you run this script with the -H
option, it will execute cmd
using run()
, but if you omit -H
, cmd
will be executed using local()
. To see the difference for yourself, run
$ fab -f smartfab.py -H some_remote_host run_that_job
and compare results with:
$ fab -f smartfab.py run_that_job