我们经常需要ssh到多个主机上执行相同的命令,为了提高效率,我们通常会自己写个脚本,循环遍历执行我们的命令,比如:

for host in `cat hosts.txt`;do
ssh username@$host cmd
done

采用这种方式的问题是:

  • 必须自己写脚本,且正确性没法保证。
  • 各个主机执行任务是串行的,必须前一台主机执行完毕后,下一台主机才能执行,难以实现并行执行。

我们可以使用parallel-ssh工具来实现并行ssh远程执行命令,它是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,目标也是简化大量计算机的管理,项目地址:https://code.google.com/p/parallel-ssh/

pssh 包安装5个实用程序:parallel-sshparallel-scpparallel-slurpparallel-nukeparallel-rsync。每个实用程序都并行地操作多个主机。

  • parallel-ssh 在多个主机上并行地运行命令。
  • parallel-scp 把文件并行地复制到多个主机上。
  • parallel-rsync 通过 rsync 协议把文件高效地并行复制到多个主机上。
  • parallel-slurp 把文件并行地从多个远程主机复制到中心主机上。
  • parallel-nuke 并行地在多个远程主机上杀死进程。

使用它首先需要安装,ubuntu已经集成到软件包中,直接使用apt-get安装:

sudo apt-get install pssh

为了简便,设置以下alias:

alias pssh='parallel-ssh'
alias pscp='parallel-scp'

编写需要远程操作的host列表hosts.txt:

node1
node2
node3
...
node100

使用时需要指定用户名和输入用户密码(必须所有主机的用户和密码相同)以及远程主机列表,通过-l username选项指定用户名,使用-A选项指定需要输入密码,使用-h指定主机列表,比如在所有的主机执行uptime操作:

pssh -P -l foo -A -h hosts.txt uptime

若我们当前主机的登录名为fgp,且fgp能够免密码登录hosts.txt的所有主机,则可以省略用户名和密码。比如,所有的主机执行uptime操作,并打印结果:

pssh -P -h  hosts.txt uptime

主机太多了,把输出保存到文件中:

pssh -o uptime_result -h  hosts.txt uptime

传输本地文件到所有的主机中:

pscp -h hosts.txt local_file.txt ~/target_file.txt

以上是简单使用方法,掌握以上的这些操作足够完成我们大多数工作,提高工作效率。

LikeBe the first to like this

No labels Edit Labels

User icon: Add a picture of yourself

Write a comment…

使用并行ssh提高工作效率的更多相关文章

  1. 程序员提高工作效率的15个技巧【Facebook】

    程序员提高工作效率的15个技巧[Facebook] 作者: habadog 日期: 2015 年 02 月 13 日发表评论 (0)查看评论 程序员提高工作效率的15个技巧[Facebook] 1,D ...

  2. 线上操作使用tmux提高工作效率

    对于常常在线上操作的人来说有一种烦恼,就是在操作过程中,有事离开了一下,电脑自己主动睡眠了.然后网络断开连接.这时候任务就要又一次跑.非常烦恼. tmux能够解决问题. tmux能够看成虚拟屏幕,不受 ...

  3. Windows 下有什么软件能够极大地提高工作效率

    Windows 下有什么软件能够极大地提高工作效率?修改 可以推荐一些好的应用或者有趣的程序,能提升工作效率或者能让人眼前一亮的.修改 举报1 条评论 分享 • 邀请回答   按票数排序按时间排序 2 ...

  4. Android Studio in OSX 提高工作效率的快捷键

    前言 本篇文章参考了<倍数提高工作效率的Android Studio>一文,快捷键基于OS X系统. OS X Yosemite 10.10.5 Android Studio 1.3.1 ...

  5. 倍数提高工作效率的 Android Studio 奇技

    来源:JeremyHe 链接:http://zlv.me/posts/2015/07/13/14_android-studio-tips/ 这是从Philippe Breault的系列文章<An ...

  6. [转]倍数提高工作效率的 Android Studio 奇技

    转自:http://android.jobbole.com/81687/ 倍数提高工作效率的 Android Studio 奇技 2015/10/08 · 技术分享 · 4 评论· Android S ...

  7. 15款提高工作效率的 Web 项目管理工具

    在今天的快节奏的商业世界里,能够通过计划.组织.和管理资源池以及评估开发资源的模式来管理一个项目,是一个很艰巨的任务. 有很多现成的项目管理软件来帮助减轻项目管理的负担,并且他们几乎覆盖了所有类型的业 ...

  8. paip.提高工作效率--数据绑定到table原则和过程Angular js jquery实现

    paip.提高工作效率--数据绑定到table原理和流程Angular js  jquery实现 html #--keyword 1 #---原理和流程 1 #----jq实现的代码 1 #----- ...

  9. Vin码识别(车架号识别)技术,摆脱手动录入提高工作效率

    本文主题:Vin码识别(车架号识别)技术,摆脱手动录入提高工作效率 本文关键词:Vin码识别,汽车Vin码识别,车架号识别,汽车车架号识别,车代码识别,车代号识别 本文主旨:一.Vin码(车架号)在什 ...

随机推荐

  1. Selenium webdriver 安装(一)

    6年的.NET开发,干过小项目,做过研发,任何架构.设计模式.各种文档齐全.技术大牛,给我最深的体会是都不如用户最后的轻轻一点,一下毁所有.这个时候我突然想起了一首歌<都选C>哈哈.如何防 ...

  2. python中API接口是什么

    首先还是举个例子:你要去银行取钱的例子.如果没有银行柜员给你服务,你自己去存钱,你需要做的事情有: 一,打开金库的大门 二,把钱放进去 三,记账,存放了多少钱 四,离开. 问题解决了,但是其中有不少问 ...

  3. PHP-模拟请求和操作响应

    模拟请求 fsockopen <?php // 建立连接 $link = fsockopen('localhost', '80'); define('CRLF', "\r\n" ...

  4. 70、saleforce的Json输出

    List<Merchandise__c> merchandise = [select Id,Name,Price__c,Quantity__c from Merchandise__c li ...

  5. 二级域名解析设置及Apache 子域名配置

    域名管理解析项 如: cy.wanggangg.top 为wanggangg.top域名添加解析 主机记录设为 cy 记录值 为服务器ip地址 打开apache配置文件 新增如下:<Virtua ...

  6. log4j日志记录到文件

    要写日志信息到一个文件中,必须使用org.apache.log4j.FileAppender.有以下FileAppender的配置参数: FileAppender配置: 属性 描述 immediate ...

  7. JPA单向和双向关系

    单向关系 @JoinColumn 双向关系 @OneToMany @ManyToMany mappedBy

  8. spring data jpa 关联设计

    MAP关联实体 // @ElementCollection @OneToMany(cascade = {CascadeType.ALL})// @JoinColumn(name = "the ...

  9. ElasticSearch中分词器组件配置详解

    首先要明确一点,ElasticSearch是基于Lucene的,它的很多基础性组件,都是由Apache Lucene提供的,而es则提供了更高层次的封装以及分布式方面的增强与扩展. 所以要想熟练的掌握 ...

  10. Mysql中(@i:=@i+1)的作用

    Oracle中有一个伪列rownum,可以在生成查询结果表的时候生成一组递增的序列号.MySQL中没有这个伪列,但是有时候要用,可以用如下方法模拟生成一列自增序号. (1)sql示例:select ( ...