fabric是python的一个基于命令行的自动化部署框架,用docker开了两个容器来学习fabric.

#!/usr/bin/env python
#-*- coding=utf-8 -*- from fabric.api import * env.hosts=[
'root@114.215.86.228:22',
'root@114.215.86.228:32',
]
env.passwords={
'root@114.215.86.228:22':'*****',
'root@114.215.86.228:32':'***',
}
@task
def task1():
run('ps') @task
def task2():
run('uname -a')
@task
def dotask():
execute(task1)
execute(task2)

执行结果

root@0fe14b5400a8:/home# fab dotask
[root@114.215.86.228:22] Executing task 'dotask'
[root@114.215.86.228:22] Executing task 'task1'
[root@114.215.86.228:22] run: ps
[root@114.215.86.228:22] out: PID TTY TIME CMD
[root@114.215.86.228:22] out: 26424 pts/2 00:00:00 ps
[root@114.215.86.228:22] out: [root@114.215.86.228:32] Executing task 'task1'
[root@114.215.86.228:32] run: ps
[root@114.215.86.228:32] out: PID TTY TIME CMD
[root@114.215.86.228:32] out: 59 pts/0 00:00:00 ps
[root@114.215.86.228:32] out: [root@114.215.86.228:22] Executing task 'task2'
[root@114.215.86.228:22] run: uname -a
[root@114.215.86.228:22] out: Linux iZ2893wjzgyZ 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@114.215.86.228:22] out: [root@114.215.86.228:32] Executing task 'task2'
[root@114.215.86.228:32] run: uname -a
[root@114.215.86.228:32] out: Linux c368a2768e6b 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@114.215.86.228:32] out: [root@114.215.86.228:32] Executing task 'dotask'
[root@114.215.86.228:22] Executing task 'task1'
[root@114.215.86.228:22] run: ps
[root@114.215.86.228:22] out: PID TTY TIME CMD
[root@114.215.86.228:22] out: 26447 pts/2 00:00:00 ps
[root@114.215.86.228:22] out: [root@114.215.86.228:32] Executing task 'task1'
[root@114.215.86.228:32] run: ps
[root@114.215.86.228:32] out: PID TTY TIME CMD
[root@114.215.86.228:32] out: 63 pts/0 00:00:00 ps
[root@114.215.86.228:32] out: [root@114.215.86.228:22] Executing task 'task2'
[root@114.215.86.228:22] run: uname -a
[root@114.215.86.228:22] out: Linux iZ2893wjzgyZ 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@114.215.86.228:22] out: [root@114.215.86.228:32] Executing task 'task2'
[root@114.215.86.228:32] run: uname -a
[root@114.215.86.228:32] out: Linux c368a2768e6b 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@114.215.86.228:32] out: Done.
Disconnecting from 114.215.86.228... done.
Disconnecting from 114.215.86.228:32... done.

尽管如此,密码是明文,不安全,因此仍然推荐用加key的方式管理服务器。

fabric批量操作远程操作主机的练习的更多相关文章

  1. 【转】python fabric实现远程操作和部署

    fabric title是开发,但是同时要干开发测试还有运维的活……为毛 task*3 不是 salary * 3 (o(╯□╰)o) 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高 ...

  2. PYTHON FABRIC实现远程操作和部署

    转载至:http://wklken.me/posts/2013/03/25/python-tool-fabric.html fabric title是开发,但是同时要干开发测试还有运维的活 (o(╯□ ...

  3. python fabric实现远程操作和部署示例

    https://www.jb51.net/article/48434.htm 近期接手越来越多的东西,发布和运维的工作相当机械,加上频率还蛮高,导致时间浪费还是优点多.修复bug什么的,测试,提交版本 ...

  4. python fabric远程操作和部署

    博客迁往:新地址(点击直达) 新博客使用markdown维护,线下有版本号库,自己写的所以会定时更新同步.同一时候提供更好的导航和阅读体验 csdn对markdown支持不好.所以旧版不会花时间进行同 ...

  5. Git远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

  6. Git远程操作

    Git远程操作 // */ // ]]>   Git远程操作 Table of Contents 1 Git远程命令概览 2 Git远程仓库与本地仓库的关系图 3 git clone 4 git ...

  7. [转] SSH原理与运用(2):远程操作与端口转发

    英文:阮一峰 链接:http://www.ruanyifeng.com/blog/2011/12/ssh_port_forwarding.html 接着前一次的文章,继续介绍SSH的用法. (Imag ...

  8. [转]Git远程操作详解

    原文:http://www.ruanyifeng.com/blog/2014/06/git_remote.html Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多 ...

  9. Git 远程操作详解

    Git是目前最流行的版本管理系统,学会Git几乎成了开发者的必备技能. Git有很多优势,其中之一就是远程操作非常简便.本文详细介绍5个Git命令,它们的概念和用法,理解了这些内容,你就会完全掌握Gi ...

随机推荐

  1. Swift获取屏幕快照

    // 获取屏幕快照 private func screenShot() -> UIImage{ let window = UIApplication.shared.keyWindow! UIGr ...

  2. Android 短信验证码平台

    1.容联云通讯 (目前只支持国内.收费) http://www.yuntongxun.com/ 2.bmob (目前只支持国内.收费) http://www.bmob.cn/ 3.阿里大鱼(目前只支持 ...

  3. 极其简单的搭建eclipse的android开发环境

    这篇博客是关于如何搭建eclipse的android开发环境, 与网上的其他博客不同,我的方法比他们简单的多,所 以推荐给大家. 搭建eclipse的android开发环境步骤: 1.配置JDK(Ja ...

  4. Android 常见对话框

    1.对话框通知(Dialog Notification) 当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成. 下面代码将打开一个如图所示的对话框: public void ...

  5. rabbitmq_management 安装失败

    安装rabbitmq_management的时候出现错误 不能连接rabbit,所以查看状态 看意思感觉好像是rabbit没有运行,但是安装的时候都是默认安装的,所以安装完以后服务的名字就是Rabbi ...

  6. OEM代工厂产品经理个人经历谈

    创业不是一件随随便便的事情! 到2007年时,我已经在上海.广州.东莞三地的工厂打工有十来年了.正是这个时间结点,我也即将做父亲了.打了很久的工后,就开始感到疲倦,做来做去,都是给老板做,也就在这时开 ...

  7. mysql-mmm 安装配置(双主)

    原文地址:mysql-mmm 安装配置 作者:chinaunix1116 MMM即Master-Master Replication Managerfor MySQL(mysql主主复制管理器)关于m ...

  8. java 中的volatile

    本博客摘录自   http://www.infoq.com/cn/articles/java-memory-model-4/ 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解 ...

  9. JSP与Servelt的区别

    相同点: 两者都是服务端的技术,而JSP本质上就是Servelt: 都可以处理来自客户端的请求,都可以对请求作出响应: 都可以生成HTML页面返回. 不同点: 在实际开发中,对JSP编程成响应的HTM ...

  10. 深入理解Nginx之调试优化技巧

    在开发过程中,我们经常会碰到段错误等异常,这时我们需要有相应的机制来进行调试,特别是服务提供在线上时,面对大量的日志信息,合理的调试处理机制对于开发来说是一件非常重要的事情,幸好Nginx本身提供了很 ...