Fabric 是什么?
Fabric 是一个 Python (2.5-2.7) 的库和命令行工具,用来提高基于 SSH 的应用部署和系统管理效率。
更具体地说,Fabric 是:
-
一个让你通过 命令行 执行 无参数 Python 函数 的工具;
-
一个让通过 SSH 执行 Shell 命令更加 容易 、 更符合 Python 风格 的命令库(建立于一个更低层次的库)。
安装
pip install fabric
第一个示例
首先创建一个fabfile.py文件,也可以使其他的文件名,但是要通过 -f 参数指定文件。我们在文件中写一个hello函数。
def hello(): print('hello fabric')
切换到fabfile.py文件所在的目录下,执行下面的命令。
fab hello
然后这个 hello
函数就就会用 fab
工具(随 Fabric 一并安装的命令)来执行了,输出的结果如下所示:
hello fabric Done.
fabfile.py 文件中每个函数就是一个任务,任务名即函数名,上例中是hello。fab命令就是用来执行fabfile.py中定义的任务,它必须显式地指定任务名。
上面说过这个py文件也可以叫其他的名字,但是要使用-f参数来指定文件。比如我们将任务写在了demo.py文件中。我们可以想下面这样执行任务。
fab hello -f demo.py
我们还可以通过-l参数列出文件中所有的任务。
fab -l
fab -l -f demo.py
带参数的任务
任务也可以带参数,fab
工具所做的只是导入 fabfile 并执行了相应一个或多个的函数,这里并没有任何魔法——任何你能在一个普通 Python 模块中做的事情同样可以在一个 fabfile 中完成。
def person(name, age): print('My name is {0},I am {1} years old '.format(name, age))
我们在执行任务是就需要传递参数
fab person:name=Tom,age=25
输出结果:
My name is Tom,I am 25 years old Done.
执行本地命令
fabric.api中的local()方法可以帮助我们执行本地命令。
def dir(path): local('dir %s' %(path))
执行任务:
fab dir:path=e:install_packpython