IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

服务器批量执行工具 PSSH

vpsee.com 2014-05-10 21:24:14 累计浏览 2,760 次
本机暂存

   操作一台服务器的时候可以 ssh,操作多台服务器可以开多个窗口多个 ssh,那操作很多台服务器呢?

   我们的一个 Oracle Gird Engine 集群上大概有60多台 Ubuntu 服务器作执行节点,这些服务器操作系统和软件配置完全一样(上线后由 puppet 统一配置),有时候我们需要在这些服务器上做同样的操作,这个时候特别适合使用 PSSH 这种 ssh 批量操作工具。

   当然,如果对 Python 不恐惧的话也可以用 Fabric 批量执行服务器任务

   下载和安装 pssh:

$ git clone http://code.google.com/p/parallel-ssh/
$ cd parallel-ssh/
$ sudo python setup.py install

批量执行

   首先新建一个服务器列表文件,把需要操作的服务器的 hostname(或者 IP 地址)加进去,然后就可以批量执行 uptime 命令了,-l 指定登录用户名,-A 询问密码,-h 指定服务器列表文件:

$ vi grids
grid01
grid02
grid03
grid04
grid05

$ pssh -i -l root -A -h grids 'uptime'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 05:42:09 [SUCCESS] grid01
 11:42:09 up 620 days, 20:30,  0 users,  load average: 6.09, 6.14, 6.13
[2] 05:42:09 [SUCCESS] grid03
 11:42:09 up 620 days, 20:29,  0 users,  load average: 9.01, 9.04, 9.05
[3] 05:42:09 [SUCCESS] grid05
 11:42:09 up 620 days, 20:10,  0 users,  load average: 8.46, 8.18, 8.10
[4] 05:42:09 [SUCCESS] grid04
 11:42:09 up 620 days, 20:25,  0 users,  load average: 6.00, 6.01, 6.05
[5] 05:42:10 [SUCCESS] grid02
 11:42:10 up 606 days,  2:07,  0 users,  load average: 6.03, 6.02, 6.01

批量上传

   批量上传本地文件 linux-3.14.3.tar.xz 到服务器上的 /tmp 目录:

$ pscp -l root -A -h grids linux-3.14.3.tar.xz /tmp/
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 05:56:16 [SUCCESS] grid01
[2] 05:56:16 [SUCCESS] grid03
[3] 05:57:04 [SUCCESS] grid05
[4] 05:57:04 [SUCCESS] grid04
[5] 05:57:05 [SUCCESS] grid02

批量下载

   批量下载服务器上的某文件到本地,不用担心重名问题,因为 pssh 已经建立了 grid01, grid02, …, grid05 目录来存放下载的文件:

$ pslurp -l root -h grids -A /tmp/linux-3.14.3.tar.xz .
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 06:06:01 [SUCCESS] grid01
[2] 06:06:01 [SUCCESS] grid03
[3] 06:06:06 [SUCCESS] grid04
[4] 06:06:06 [SUCCESS] grid02
[5] 06:06:06 [SUCCESS] grid05

$ ls
grid01  grid02  grid03  grid04  grid05  grids  linux-3.14.3.tar.xz  parallel-ssh

批量同步

   有时候我们需要保持开发机上(某目录里)的数据和服务器上的数据一致:

$ prsync -l root -h grids -A -r develop/ /tmp/production/
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password:
[1] 06:12:52 [SUCCESS] grid05
[2] 06:12:52 [SUCCESS] grid01
[3] 06:12:52 [SUCCESS] grid04
[4] 06:12:52 [SUCCESS] grid02
[5] 06:12:52 [SUCCESS] grid03

原图已失效

同分类推荐文章

  1. 从零重建 macOS 开发机:可复现的环境初始化流程 (2026-06-14 20:36:00)
  2. 百度物理网络监控工具开源第二弹:毫秒级监控工具 baize,让你的网络问题无处遁形 (2026-06-11 08:10:28)
  3. How to Set Up Homebrew Tap for Private CLI Tools: A Complete Guide (2026-05-27 02:13:03)

查看更多 DevOps 文章 →

建议继续学习

  1. 高效Linux用户需要了解的命令行技能 (累计阅读 12,823)
  2. linux 建立两台机器的信任关系 (累计阅读 11,482)
  3. 如何监控HP服务器硬件状态 (累计阅读 10,771)
  4. Linux服务器性能评估 (累计阅读 10,046)
  5. Bash脚本15分钟进阶教程 (累计阅读 9,056)
  6. sshd+chrome+switchsharp翻墙 (累计阅读 8,786)
  7. 批量添加主机到 Cacti 的命令行工具 (累计阅读 8,555)
  8. Linux shell脚本使用while循环执行ssh的注意事项 (累计阅读 8,186)
  9. Mac下使用SecureCRT的一些记录 (累计阅读 7,871)
  10. SecureCRT for Mac OS X 6.7.3破解方法 (累计阅读 6,809)