Memo/Linux/pdsh

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2018-09-15 (土) 07:31:38 (9d)