使用并行ssh提高工作效率
我们经常需要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-ssh
、parallel-scp
、parallel-slurp
、parallel-nuke
和parallel-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…
最新文章
- 反编译apk时遇到的问题
- Java 之ThreadLocal 对应C#之ThreadStatic
- python day2 字符串的方法
- 【转载】android中.9png
- python-根据左右值获取城市区域编码
- java实现贪吃蛇游戏
- CentOS 下 Codeblocks 的 安装 + 汉化 以及 基本使用介绍
- 正式学习react(二)
- 页面按F5重复提交数据解决方法
- solr与.net课程(七)solr主从复制
- NodeJs md5 sha1加密
- Struts 2 实现登录以及显示信息
- 红包项目总结---MVC版
- javascript封装的函数
- OpenCV使用中的一些总结
- Java基础学习-基本数据类型变量的定义和使用
- mysql下载以及安装
- ES6模块化与常用功能
- git关联githup和码云
- Spring Boot 静态资源映射与上传文件路由配置