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…

  • 相关阅读:
    OC中ARC forbids explicit message send of release错误
    OC中内存管理(转)
    [题解]数学期望_luogu_P1850_换教室
    [题解](单调队列)luogu_P2216_BZOJ_1047 理想的正方形
    [题解]luogu_AT1224_JOIOJI
    [题解]区间dp_luogu_P3147 262144
    [筆記]歐拉路
    [題解/狀壓dp]POJ_2411_Mondriaan's dream
    [題解]luogu_P1854 花店櫥窗佈置
    [題解]luogu_P1052 過河
  • 原文地址:https://www.cnblogs.com/int32bit/p/5391042.html
Copyright © 2011-2022 走看看