我们经常需要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…

最新文章

  1. 反编译apk时遇到的问题
  2. Java 之ThreadLocal 对应C#之ThreadStatic
  3. python day2 字符串的方法
  4. 【转载】android中.9png
  5. python-根据左右值获取城市区域编码
  6. java实现贪吃蛇游戏
  7. CentOS 下 Codeblocks 的 安装 + 汉化 以及 基本使用介绍
  8. 正式学习react(二)
  9. 页面按F5重复提交数据解决方法
  10. solr与.net课程(七)solr主从复制
  11. NodeJs md5 sha1加密
  12. Struts 2 实现登录以及显示信息
  13. 红包项目总结---MVC版
  14. javascript封装的函数
  15. OpenCV使用中的一些总结
  16. Java基础学习-基本数据类型变量的定义和使用
  17. mysql下载以及安装
  18. ES6模块化与常用功能
  19. git关联githup和码云
  20. Spring Boot 静态资源映射与上传文件路由配置

热门文章

  1. HTML5 开发技能图谱skill-map
  2. PIL库,图像处理第三方库
  3. 63、saleforce DML
  4. 2019牛客多校第⑨场E All men are brothers(并查集+组合数学)
  5. camunda流程部署的一些简单操作
  6. assets和static
  7. 第一周复习一 ( HTML表单form)
  8. pytest_参数化3
  9. 使用androidstudio时遇到的一些小错误
  10. C# JavaScriptSerializer 自定义序列化