Memo/Linux/pdsh

http://dexlab.net/pukiwiki/index.php?Memo/Linux/pdsh
 

並列SSH pdsh(Parallel Distributed Shell)

  • 公開鍵認証でパスワード無しでログインできるようにしておく
  • "-f" : デフォルトの同時実行数:32。「-f 100」で同時100実行。「-f 1」で順次実行
  • "%h" : 対象のホスト名に変換される
  • インストール(2012-08-07 pdsh-2.27-1.el6.rf.x86_64)
    1. sudo yum -y install pdsh --enablerepo=rpmforge
    2.  
    3. # 秘密鍵/公開鍵の準備
    4. mkdir -p ~/.ssh
    5. chmod 700 ~/.ssh
    6. touch ~/.ssh/config
    7. chmod 600 ~/.ssh/config
    8.  
    9. # 秘密鍵/公開鍵の作成と、対象ホストに公開鍵登録
    10. ssh-keygen -t rsa
    11. ssh-copy-id -i ~/.ssh/id_rsa.pub user@hostname
    12.  
    13. # ~/.ssh/known_hostsに未登録の場合でもホストキーチェック無効
    14. echo "StrictHostKeyChecking no" >> ~/.ssh/config
    15.  
    16. # 環境変数に設定する場合。ホストIPチェック無効、ホストキーチェック無効
    17. export PDSH_SSH_ARGS_APPEND='-o CheckHostIP=no -o StrictHostKeyChecking=no'
  • グループ保存ディレクトリ作成
    1. mkdir -p ~/.dsh/group
  • グループファイル作成
    1. cat >> ~/.dsh/group/example-hosts << 'EOS'
    2. 192.168.1.101
    3. 192.168.1.102
    4. 192.168.1.103
    5. EOS
  • "-g" : グループ名を指定して実行
    1. pdsh -g example-hosts "uname -a" | dshbak
    2.  
    3. # -c:重複内容だと、同じグループにまとめて表示してくれる
    4. pdsh -g example-hosts "uname -a" | dshbak -c
  • "-w" : ホストを指定して実行。IPアドレスや名前解決可能なホスト名。カンマ区切りや[1-3]等の表現が使える
    1. pdsh -w 192.168.1.102,192.168.1.103 "uptime" | dshbak
    2.  
    3. pdsh -w 192.168.1.10[1-3] "uptime" | dshbak
    4.  
    5. pdsh -w host[001-002].example.com "uptime" | dshbak
  • 秘密鍵が複数ある場合。デフォルトは"~/.ssh/id_rsa"が使われる
    1. vi ~/.ssh/config
    2. ----
    3. IdentityFile    ~/path/to/example.pem
    4. ----
  • aws ec2のような公開鍵認証で秘密鍵が複数ある場合。"StrictHostKeyChecking?=no"は必須だが長くなるので、~/.ssh/config に書いてある
    1. PDSH_SSH_ARGS_APPEND="-i /path/to/KEYPAIR.pem" pdsh -l root -g example-hosts "cat /proc/cpuinfo" | dshbak -c
  • 以下のエラーで、sudoできない場合。ttyの割り当てが必要
    1. 192.168.1.102: sudo: sorry, you must have a tty to run sudo
    • PDSH_SSH_ARGS_APPENDでオプションを渡す方法
      1. export PDSH_SSH_ARGS_APPEND="-tt -q"
      2. pdsh -w 192.168.1.102 sudo ls /root
    • tty必須の部分をコメントアウトする方法
      1. visudo
      2. ----
      3. #Defaults    requiretty
      4. ----

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-02-17 (金) 14:42:15 (517d)