當機器越來越多, 要同時執行命令, ex: uptime、apt-get update... 等等, 就會很費時, 此時可以使用 pssh (Parallel SSH) 來對多台機器同時下命令~
註: DSH 也可以考慮, 可參考此篇: 管理多台機器的好工具 dsh (分散式 Shell)
使用 Parallel SSH 管理、同時對多台機器執行命令
Parallel SSH 官方網站
Parallel SSH 安裝
- $ sudo apt-get install pssh # 或 git clone http://code.google.com/p/parallel-ssh/
- 註: 於 Debian、Ubuntu Linux 將 pssh 等命令名字使用全名 (怕名字衝突)
- parallel-ssh = pssh
- parallel-scp = pscp
- parallel-rsync = prsync
- parallel-nuke = pnuke
- parallel-slurp = pslurp
- 取自: /usr/share/doc/pssh/README.Debian
Parallel SSH 說明
Parallel SSH 程式的作用, 可參考此篇: Automating ssh and scp across multiple hosts, 下述英文摘錄自此篇:
- parallel-slurp
- This command allows you to copy files from multipl remote hosts to the local system. We'll demonstrate the usage shortly.
- 從多台機器 scp 檔案到 local 本機
- parallel-ssh
- This command allows you to run commands upon a number of systems in parallel. We'll also demonstrate this command shortly.
- 將命令送到多台去執行
- parallel-nuke
- This command likes you kill processes on multiple remote systems.
- 到多台機器去 kill process
- parallel-scp
- This is the opposite of parallel-slirp and allows you to copy a file, or files, to multiple remote systems.
- 和 parallel-slirp 相反, 將 local 的檔案 scp 到多台機器去
Parallel SSH 執行範例
基本範例如下:
- $ pssh -h hosts.txt -l username -o /tmp/foo uptime # 將輸出結果放置 /tmp/foo
- $ pssh -h hosts.txt -A -i uptime # -A 若沒有 key 會需要輸入密碼
假設 sshgroup 已經將機器作過分類, ex: sshgroup/db.txt, sshgroup/fe.txt, 檔案內容為機器 hostname, 用斷行(\n)分隔.
- $ parallel-ssh -h sshgroup/db.txt -A -P uptime
- -A 沒有 key 可以輸入密碼
- -P print message