Python之Fabric模块

Fabric是基于Python实现的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包括:命令执行、文件上传、下载及完整执行日志输出等功能。Fabric在Paramiko的基础上做了更高一层的封装,操作起来会更加简单。

命令说明

命令格式:

fab [options] <command>[:arg1,arg2=val2,host=foo,hosts=‘h1;h2‘,...] ...
-l     #显示定义好的任务函数名
-f     #指定fab入口文件,默认入口文件名为fabfile.py
-f     #指定网关(中转)设备,比如堡垒机环境,填写堡垒机IP即可
-H     #指定目标主机,多台主机用‘,’号分隔
-p     #远程账号的密码,fab执行时默认使用root账户
-P     #以异步并行方式运行多主机任务,默认为串行运行
-R     #指定role(角色),以角色名区分不同业务组设备
-t     #设置设备连接超时时间(秒)
-T     #设置远程主机命令执行超时时间(秒)
-w     #当命令执行失败,发出警告,而非默认中止任务。

简单实例

1.查看本地和远程主机的内存使用大小

192.168.100.242是本机,192.168.100.245是远程主机

[email protected]:/usr/local/sbin# cat fab1.py
#!/usr/bin/env python
from fabric.api import *
env.hosts = [‘192.168.100.242‘,‘192.168.100.245‘]
env.user = ‘root‘
env.passwords = {‘[email protected]:22‘:‘root‘,‘[email protected]:22‘:‘abc123‘}
@runs_once
def local_mem():
    local(‘free -m‘)
def remote_mem():
    run(‘free -m‘)

查看可以执行的命令:

[email protected]:/usr/local/sbin# fab -f fab1.py -l
Available commands:

    local_mem
    remote_mem

下面是执行结果:

[email protected]:/usr/local/sbin# fab -f fab1.py local_mem
[192.168.100.242] Executing task ‘local_mem‘
[localhost] local: free -m
             total       used       free     shared    buffers     cached
Mem:         48294      35086      13207          4       1775      31047
-/+ buffers/cache:       2263      46031
Swap:            0          0          0

Done.
[email protected]:/usr/local/sbin# fab -f fab1.py remote_mem
[localhost] local: free -m
             total       used       free     shared    buffers     cached
Mem:         48294      35087      13206          4       1776      31049
-/+ buffers/cache:       2262      46031
Swap:            0          0          0

Done.
[192.168.100.245] run: free -m
[192.168.100.245] out:              total       used       free     shared    buffers     cached
[192.168.100.245] out: Mem:           984        890         93          0        188        208
[192.168.100.245] out: -/+ buffers/cache:        493        490
[192.168.100.245] out: Swap:         3071          0       3071
[192.168.100.245] out:

Done.
时间: 2024-12-22 19:29:52

Python之Fabric模块的相关文章

python linux交互模块(paramiko、fabric与pexpect)

转载自: http://blog.csdn.net/alibert/article/details/54375276 paramiko paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 默认python没有,需要手动安装:pip install paramiko 如安装失败,可以尝试yum安装:yum install python-paramiko 18.1.1 SSH密码认证远程执行命令 1 2 3 4 5 6 7 8 9 10 11 1

Python Fabric 模块 介绍及简单应用

来源:<Python自动化运维> Fabric的安装 Fabric支持pip.easy_install或源码安装方式,很方便解决包依赖的问题,具体安装命令如下( 根据用户环境,自行选择pip或easy_install): pip install fabric easy_install fabric Fabric依赖第三方的setuptools.Crypto.paramiko包的支持,源码 安装步骤如下: # yum -y install python-setuptools # wget htt

Python中subprocess 模块 创建并运行一个进程

python的subprocess模块,看到官方声明里说要尽力避免使用shell=True这个参数,于是测试了一下: from subprocess import call import shlex cmd = "cat test.txt; rm test.txt" call(cmd, shell=True) 运行之后: 1:打开并浏览了test.txt文件 2:删除了test.txt文件 from subprocess import call import shlex cmd = &

python时间处理模块 datetime time模块 deltetime模块

1 首先介绍time模块,因为简单 python 自带模块 本人使用time模块,只使用两个函数 time函数和sleep函数 import time a.     time.time()   函数 返回unix时间  常用作两个时间差的计算 b.     time.sleep()  休眠多久,精度为子秒(subsecond) In [90]: t1 = time.time() In [91]: t1 Out[91]: 1461400225.877932 In [92]: time.sleep(

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python

Python 利用pytesser模块识别图像文字

使用的是python的pytesser模块,原先想做的是图片中文识别,搞了一段时间了,在中文的识别上还是有很多问题,这里做记录分享. pytesser,OCR in Python using the Tesseract engine from Google.是谷歌OCR开源项目的一个模块,可将图片中的文字转换成文本(主要是英文). 1.pytesser安装 使用设备:win8 64位 PyTesser使用Tesseract OCR引擎,将图像转换到可接受的格式,然后执行tesseract提取出文

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

[ python编程 ] subprocess模块学习总结

转载:http://www.jb51.net/article/48086.htm 从Python 2.4开始,Python引入subprocess模块来管理子进程,以取代一些旧模块的方法:如 os.system.os.spawn*.os.popen*.popen2.*.commands.*不但可以调用外部的命令作为子进程,而且可以连接到子进程的input/output/error管道,获取相关的返回信息. 一.subprocess以及常用的封装函数    运行python的时候,我们都是在创建并