zoukankan      html  css  js  c++  java
  • 使用并行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-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…

  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/int32bit/p/5391042.html
Copyright © 2011-2022 走看看