HostOnNet Blog


fabric is a tool for system administration/DevOps. It allows you to manage multiple servers with single command.

You can find more information about fabric at

fabric work over SSH, using SSH Keys. No special software needed to be install on server side. To install fabric on Ubuntu, run

$ sudo pip install fabric
[sudo] password for boby: 
Downloading/unpacking fabric
  Downloading Fabric-1.10.2-py2-none-any.whl (90kB): 90kB downloaded
Downloading/unpacking paramiko>=1.10 (from fabric)
  Downloading paramiko-1.15.3-py2.py3-none-any.whl (166kB): 166kB downloaded
Requirement already satisfied (use --upgrade to upgrade): pycrypto>=2.1,!=2.4 in /usr/lib/python2.7/dist-packages (from paramiko>=1.10->fabric)
Downloading/unpacking ecdsa>=0.11 (from paramiko>=1.10->fabric)
  Downloading ecdsa-0.13-py2.py3-none-any.whl (86kB): 86kB downloaded
Installing collected packages: fabric, paramiko, ecdsa
Successfully installed fabric paramiko ecdsa
Cleaning up...

To use fabric, you need to create a, here is my

$ cat
from fabric.api import env
from fabric.api import run

env.hosts = ['s20n','s46n','s48n','s74n']
env.user = 'root'
env.port = 3333

def uptime():

def mailq():
    run('exim -bpc')

def eximrm():

def df():
    run('df -h')
def uname():
    run('uname -r')

def upgrade():
    run('yum upgrade -y')

def honcpanel():
    run('cd /usr/honcpanel && git pull origin master');

To run uptime on all servers, i run

fab uptime

fabric will run the command defined in mailq() function on all servers you specified in the file and display the result.

boby@fwhlin:~/www/fabric $ fab uptime
[s20n] Executing task 'uptime'
[s20n] run: uptime
[s20n] out:  04:58:19 up 1 day, 10:15,  1 user,  load average: 0.53, 0.76, 0.91
[s20n] out: 

[s46n] Executing task 'uptime'
[s46n] run: uptime
[s46n] out:  04:58:21 up 10 days, 21:12,  1 user,  load average: 2.08, 1.94, 2.04
[s46n] out: 

[s48n] Executing task 'uptime'
[s48n] run: uptime
[s48n] out:  04:58:32 up 2 days,  1:27,  1 user,  load average: 4.90, 5.75, 5.82
[s48n] out: 

[s74n] Executing task 'uptime'
[s74n] run: uptime
[s74n] out:  04:58:37 up 1 day, 10:27,  1 user,  load average: 1.04, 1.25, 1.37
[s74n] out: 

Disconnecting from s48n:3333... done.
Disconnecting from s46n:3333... done.
Disconnecting from s74n:3333... done.
Disconnecting from s20n:3333... done.
boby@fwhlin:~/www/fabric $

pip Failed to build cryptography

Posted in Python