Fabric批量远程执行操作
来源:互联网 发布:如何学习手机编程 编辑:程序博客网 时间:2024/05/22 01:41
最近有个需求就是要在一个集群的多个机器上运行一些命令,比如启动、停止服务,运行一些脚本收集一些数据等,于是找到了python的一个框架Fabric。Fabric是一个Python库,用于简化使用SSH的应用程序部署或系统管理任务。
它提供的主要功能包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入、中止执行等。
安装
在我的CentOS上,运行下面的命令就可以简单安装
yum install http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpmyum install fabric.noarch
测试脚本
在当前目录下创建fabfile.py文件,fabric默认总是使用fabfile.py作为它的配置文件,当然也可以使用-f来指定使用的配置文件,内容如下:
def hello(): print("Hello fab!")
然后运行”fab hello”,可以得到如下结果
Hello fab!
下面看看参数怎样传递
def hello(name): print 'Hello %s!'%name
然后运行”fab hello:name=fab”,可以得到如下结果
Hello fab!
执行本地操作
from fabric.api import *def test(): local('cd /tmp') local('ls -l')
执行远程操作
from fabric.api import *env.hosts=['kongxx@host1:22','kongxx@host2:22']env.password='Letmein'def test(): with('cd /tmp'): run('ls -l')
其中env.hosts定义了要远程执行的机器列表,env.password是要登录远程机器的密码。
批量远程启停服务
基本命令知道咋用了,下面就看看怎样实现我需要的功能,由于我需要批量在200多台机器上批量启动服务和执行命令,所有这些机器都配置了免密码登录,这样就不需要配置env.password了
机器列表文件
首先准备了一个机器列表文件,比如把所有机器名写在/tmp/hosts文件中,每行一个机器名,类似如下
host1host2host3...
fabfile.py文件
from fabric.api import *import osdef set_hosts(): f=open('/tmp/hosts', 'r') env.hosts=f.readlines() f.close()@parallel(pool_size=5)def start(): print("start service") prepare_hosts() run('/etc/init.d/myservice start')@parallel(pool_size=5)def stop(): print("stop service") prepare_hosts() run('/etc/init.d/myservice stop')@parallel(pool_size=5)def status(): print("check service status") prepare_hosts() run('/etc/init.d/myservice status')
这里由于机器比较多,因此使用了“@parallel(pool_size=5)”来使fabric使用并发方式执行,当然也可以使用命令行参数指定使用并发方式“fab -P -z 5 ”。
运行下面命令即可批量执行启动、停止、查询状态操作
fab set_hosts start|stop|status
转载请以链接形式标明本文地址
本文地址:http://blog.csdn.net/kongxx/article/details/46480579
- Fabric批量远程执行操作
- 利用python fabric模块写的批量操作远程主机脚本(命令执行,上传、下载文件)
- fabric 远程操作和部署
- fabric实例——批量操作服务器
- python远程批量执行
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- [python]fabric实现远程操作和部署
- python fabric实现远程操作和部署
- python fabric实现远程操作和部署
- Python Fabric 实现远程操作和部署
- PYTHON FABRIC实现远程操作和部署
- PYTHON FABRIC实现远程操作和部署
- JdbcTemplate 执行批量操作
- Python模块学习笔记— —hashlib
- Python学习十二:高阶函数
- HDU--1164
- 日期格式化
- 初次接触Deep Learning 任务1的解读
- Fabric批量远程执行操作
- 网络的两大模型
- 因特网的IP协议是不可靠无连接的,那为什么当初不直接把它设计为可靠的?
- Leetcode[144]-Binary Tree Preorder Traversal
- Java IO流中的flush()的神秘面纱
- 反向代理实现nginx+apache动静分离
- Hash Table
- java门禁系统面向对象程序设计
- Hadoop基本操作命令