使用並行ssh提升工做效率

咱們常常須要ssh到多個主機上執行相同的命令,爲了提升效率,咱們一般會本身寫個腳本,循環遍歷執行咱們的命令,好比:node

for host in `cat hosts.txt`;do
    ssh username@$host cmd
done

採用這種方式的問題是:python

  • 必須本身寫腳本,且正確性無法保證。
  • 各個主機執行任務是串行的,必須前一臺主機執行完畢後,下一臺主機才能執行,難以實現並行執行。

咱們能夠使用parallel-ssh工具來實現並行ssh遠程執行命令,它是一個python編寫能夠在多臺服務器上執行命令的工具,同時支持拷貝文件,目標也是簡化大量計算機的管理,項目地址:https://code.google.com/p/parallel-ssh/
pssh 包安裝5個實用程序:parallel-sshparallel-scpparallel-slurpparallel-nukeparallel-rsync。每一個實用程序都並行地操做多個主機。ubuntu

  • parallel-ssh 在多個主機上並行地運行命令。
  • parallel-scp 把文件並行地複製到多個主機上。
  • parallel-rsync 經過 rsync 協議把文件高效地並行複製到多個主機上。
  • parallel-slurp 把文件並行地從多個遠程主機複製到中心主機上。
  • parallel-nuke 並行地在多個遠程主機上殺死進程。

使用它首先須要安裝,ubuntu已經集成到軟件包中,直接使用apt-get安裝:bash

sudo apt-get install pssh

爲了簡便,設置如下alias:服務器

alias pssh='parallel-ssh'
alias pscp='parallel-scp'

編寫須要遠程操做的host列表hosts.txt:ssh

node1
node2
node3
...
node100

使用時須要指定用戶名和輸入用戶密碼(必須全部主機的用戶和密碼相同)以及遠程主機列表,經過-l username選項指定用戶名,使用-A選項指定須要輸入密碼,使用-h指定主機列表,好比在全部的主機執行uptime操做:工具

pssh -P -l foo -A -h hosts.txt uptime

若咱們當前主機的登陸名爲fgp,且fgp可以免密碼登陸hosts.txt的全部主機,則能夠省略用戶名和密碼。好比,全部的主機執行uptime操做,並打印結果:this

pssh -P -h  hosts.txt uptime

主機太多了,把輸出保存到文件中:google

pssh -o uptime_result -h  hosts.txt uptime

傳輸本地文件到全部的主機中:code

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…

相關文章
相關標籤/搜索