凌的博客

您现在的位置是: 首页 > 学无止境 > python > 

python

fabric模块使用

2019-08-21 python 1356

fabric模块是在paramiko基础上又做了一层封装,操作起来更方便。主要用于多台主机批量执行任务。
 默认Python没有,需要手动安装:pip install  fabric
 如安装失败,可以尝试yum安装:yum install  fabric
 Fabric常用API:


     API类

描述

示例

local

执行本地命令

local('uname    -s')

lcd

切换本地目录

lcd('/opt')

run

执行远程命令

run('uname    -s')

cd

切换远程目录

cd('/opt')

sudo

sudo方式执行远程命令

sudo('/etc/init.d/httpd    start')

put

上传本地文件或目录到远程主机

put(remote_path,    local_path)

get

从远程主机下载文件或目录到本地

put(local_path,    remote_path)

open_shell

打开一个shell,类似于SSH连接到了远程主机

open_shell("ifconfig    eth0")

prompt

获得用户输入信息

prompt('Please    input user password: ')

confirm

获得提示信息确认

confirm('Continue[Y/N]?')

reboot

重启远程主机

reboot()

@task

函数装饰器,引用说明函数可调用,否则不可见

 

@runs_once

函数装饰器,函数只会执行一次

 

当我们写好fabric脚本后,需要用fab命令调用执行任务。
 命令格式:fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...]  ...
 fab命令有以下常用选项:


     选项

描述

-l

打印可用的命令(函数)

--set=KEY=VALUE,...

逗号分隔,设置环境变量

--shortlist

简短打印可用命令

-c PATH

指定本地配置文件

-D

不加载用户known_hosts文件

-f PATH

指定fabfile文件

-g HOST

逗号分隔要操作的主机

-i PATH

指定私钥文件

-k

不加载来自~/.ssh下的私钥文件

-p PASSWORD

使用密码认证and/or sudo

-P

默认为并行执行方法

--port=PORT

指定SSH连接端口

-R ROLES

根据角色操作,逗号分隔

-s SHELL

指定新shell,默认是'/bin/bash -l    -c'

--show=LEVELS

以逗号分隔的输出

--ssh-config-path=PATH

SSH配置文件路径

-t N

设置连接超时时间,单位秒

-T N

设置远程命令超时时间,单位秒

-u USER

连接远程主机用户名

-x HOSTS

以逗号分隔排除主机

-z INT

并发进程数

主机列表组


     env属性

描述

示例

env.hosts

定义目标主机

env.hosts =    ['192.168.1.120:22']

env.exclude_hosts

排除指定主机

env.exclude_hosts    = '[192.168.1.1]'

env.user

定义用户名

env.user='root'

env.port

定义端口

env.port='22'

env.password

定义密码

env.password='123'

env.passwords

定义多个密码,不同主机对应不同密码

env.passwords    = {'root@192.168.1.120:22': '123'}

env.gateway

定义网关

env.gateway='192.168.1.2'

env.roledefs

定义角色分组

env.roledef =    {'web':['192.168.1.11'], 'db':['192.168.1.12']}

env.deploy_release_dir

自定义全局变量,格式:env.+ '变量名'

env.var

env作用是定义fabfile全局设定,类似于变量。还有一些常用的属性:

文章评论

0条评论