fabric篇之常用接口的操作类Operations介绍及使用方法

众所周知,自动化,批量化管理是运维人员必备的知识技能,自动化和批量化也有很多方式,可通过单一工具写shell脚本实现功能,也可开发出一套完整的任务管理系统【相对比较麻烦】。
其实很多时候,我们在对多台服务器进行控制时,都是通过远程ssh来控制,完成工作任务。

而fabric中常用接口的调用是通过Operations类来实现的。
其中包括许多方法,下面来介绍下常用接口及相关的方法使用。

一、调用方法:

from fabric.api import require,pormpt,put,get,run,sudo,local,reboot,open_shell
或
from fabric.operations import require,pormpt,put,get,run,sudo,local,reboot,open_shell

二、方法的使用及功能:
(1)require #检查你在env.的环境变量中是否有值(即不为None),如果有,则继续执行,否则将退出

(2)prompt #提示:类似一个raw_input,提供一个交互接口,用来保存一个字符串

例:

def prompt_test():
  path=prompt('输入一个路径:')
  run('ls %s' % path)
输出:
[root@salt-monion-1 gyk_fab]# fab -f operations_test.py prompt_test
[192.168.1.219] Executing task 'prompt_test'
输入一个路径: /home      
[192.168.1.219] run: ls /home    
[192.168.1.200] Executing task 'prompt_test'
输入一个路径: /home
[192.168.1.200] run: ls /home
[192.168.1.200] out: eventlisten.py
[192.168.1.200] out:

Done.
Disconnecting from 192.168.1.200... done.
Disconnecting from 192.168.1.219... done.

(3)put #上传本地文件到远程主机

 例:
    def put_test():
      put('/tmp/dir/1','/tmp/dir_test')
    输出:
    [root@salt-monion-1 gyk_fab]# fab -f operations_test.py put_test
    [192.168.1.219] Executing task 'put_test'
    [192.168.1.219] put: /tmp/dir/1 -> /tmp/dir_test/1
    [192.168.1.200] Executing task 'put_test'
    [192.168.1.200] put: /tmp/dir/1 -> /tmp/dir_test/1

    Done.
    Disconnecting from 192.168.1.200... done.
    Disconnecting from 192.168.1.219... done.

(4)get #从远程主机下载文件到本地,但是这只能对应1台主机,不然传过来的文件名相同,会报错的(因此不能当做批量下载来使用)。
get方法是从远程主机 copy file 到本地,功能跟scp一样。可以从远程主机下载,备份,或者日志文件等等。
通过参数 remote_path 指定远程文件的路径, local_path 指定本地文件的路径
使用方法如下:

# Download some logs
get(remote_path="/tmp/xxx.log",local_path="/tmp/xxx.log")
# Download a database back-up
get("/backup/db.gz","./db.gz")

(5)run #执行系统命令,当warn_only=True是,你可以用一个变量来接收它(变量=run()),然后用 变量.succeeded查看命令是否执行成功了。
Fabric 中使用最多的就是run方法了。run是用来在一台或者多台远程主机上面执行shell命令。
注:1、方法的返回值是可以通过变量来进行捕获
2、可以通过变量的.failed 和 .succeeded 来检查命令是否执行成功
3、还有一个很赞的就是 run 方法中执行命令的时候,可以支持awk
使用方法:

# create a directory
run("mkdir -p /tmp/testdir/")
# check process
result = run("ps -ef | grep mysqld | grep -v safe | grep -v grep | wc -l ")
# Check if command  检查命令执行结果
result.failed

(6)sudo和local 用sudo cmd的方式执行命令 && 只在本地执行命令(即不会在远程主机上执行)
local命令是执行本机的命令或者脚本.使用方法,和run还有sudo类似,但是有一个区别就是:捕获结果的时候,是通过指定 capture=False 或者 capture=True来确定。
使用方法:

# example like this: 举例如下
def helloworld(who='world'):
    print "Hello {0}!".format(who)
    yy = local("pwd",capture=False)
    print "start : yy = ',yy , ': :: ',yy.succeeded"
    zz = local("pwd",capture=True)
    print 'start : zz = ' ,zz,': :: ',zz.succeeded
#result  执行结果
→ fabric fab -f helloword.py helloworld -H 10.211.55.3 -u root
[10.211.55.3] Executing task 'helloworld'
Hello world!
[localhost] local:  pwd
/Users/ruiaylin/Documents/workpython/fabric
start : yy =  : :: True
[localhost] local: pwd
start : zz = /Users/ruiaylin/Documents/workpython/fabric : :: True

(7)reboot 重启主机,但它有一个好处,就是当主机重启时,fabric会进入等待,当你重启以后,它会继续执行后面的内容

(8)open_shell自动连接到另一个终端上,重新打开一个shell。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值