码迷,mamicode.com
首页 > 其他好文 > 详细

fabric应用

时间:2015-12-01 12:48:43      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

 

安装: pip install fabric  或easy_install fabric

验证:

#python

>>> import  fabric

 

Fabric提供几个简单的API来完成所有的部署,最常用的是local()和run(),分别在本地和远程执行命令,put()可以把本地文件上传到远程,当需要在远程指定当前目录时,只需用with cd(‘/path/to/dir/‘):即可。

默认情况下,当命令执行失败时,Fabric会停止执行后续命令。有时,我们允许忽略失败的命令继续执行,比如run(‘rm /tmp/abc‘)在文件不存在的时候有可能失败,这时可以用

with settings(warn_only=True):执行命令,这样Fabric只会打出警告信息而不会中断执行

Fabric是如何在远程执行命令的呢?其实Fabric所有操作都是基于SSH执行的,必要时它会提示输入口令,所以非常安全。更好的办法是在指定的部署服务器上用证书配置无密码的ssh连接。

 

------------------------------------------------------------

功能说明:
        设置shell

语  法:
        set [+-abCdefhHklmnpPtuvx]

补充说明:
set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。

参  数:
        -a  标示已修改的变量,以供输出至环境变量。 
        -b  使被中止的后台程序立刻回报执行状态。 
        -C  转向所产生的文件无法覆盖已存在的文件。 
        -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 
        -e  若指令传回值不等于0,则立即退出shell。   
        -f   取消使用通配符。 
        -h  自动记录函数的所在位置。 
        -H Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。 
        -k  指令所给的参数都会被视为此指令的环境变量。 
        -l  记录for循环的变量名称。 
        -m  使用监视模式monitor,允许作业控制。 
        -n  只读取指令,而不实际执行。 
        -p  启动优先顺序模式。 
        -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。 
        -t  执行完随后的指令,即退出shell。 
        -u  当执行时使用到未定义过的变量,则显示错误信息。 
        -v  显示shell所读取的输入值。 
        -x  执行指令后,会先显示该指令及所下的参数。 
        +<参数>  取消某个set曾启动的参数。 

Finally, I was able to figure out how to startup tomcat remotely with fabric.

The issue was in background tasks as they will be killed when the command ends.

The solution is simple: just add "set -m;" prefix before command. The full fabric command should be:

sudo(‘set -m; /opt/tomcat/bin/startup.sh‘)
例如:
@task
def starttomcat():
    with cd(env.tomcatpath):
        run("set -m ; sh ./bin/startup.sh")
    print yellow ("41 tomcat for callback already started!")
                                                      

 

fabric应用

标签:

原文地址:http://www.cnblogs.com/wjoyxt/p/5009505.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!