5 ポイント 投稿者 xguru 2025-04-22 | 2件のコメント | WhatsAppで共有
  • Parallel SSHセッションを通じて複数のサーバーでコマンドを同時に実行できるCLIツール
  • シンプルな使い方から高度な入出力制御まで対応しており、サーバークラスター管理に役立つ

基本機能

  • 複数ホストでコマンドを実行し、ホスト名をプレフィックスとして出力
    • 例: pussh -h host1,host2 uname -a
  • ホスト一覧はファイルまたは標準入力から提供可能
    • 例: pussh -f servers uname -a または fetch-servers | pussh -f - uname -a
  • 出力をパイプラインに接続して並べ替えやフィルタリングが可能
    • 例: ディスク使用量順にソート → pussh -f servers df -h / | grep /dev | sort -rn -k5
  • 各ホストごとの出力を個別ファイルに保存可能 (%h はホスト名のプレースホルダー)
    • 例: pussh -f servers -o %h-hw.txt lshw
  • SSH出力結果を別のコマンドにパイプ処理可能
    • 例: pussh -f servers -o '|grep feature' command > output

入力制御機能

  • コマンド実行時の入力をファイルやコマンド出力から提供可能
    • 例: pussh -f servers -i file command
    • 例: ホストごとの入力ファイル → pussh -f servers -i %h.data command
    • 例: 動的入力 → pussh -f servers -i 'get-data %h|' command
  • -i-o は自由に組み合わせ可能

配布と実行機能

  • コマンドまたはスクリプトをリモートへ転送して実行可能
    • 例: pussh -f servers -u my-deploy.sh args ...
    • ただし、実行ファイルはself-contained形式であるか、対象サーバー環境と互換性がある必要がある

パフォーマンス最適化のヒント

  • SSH接続確立の速度が全体の実行時間に大きく影響する
  • SSH agentの処理速度の限界を超えると、認証失敗や接続エラーが発生する可能性がある
  • 推奨: 実行レート(rate)を設定して利用すること (例: alias pussh='pussh -r 50')
  • ネットワーク遅延の影響が大きいため、リモートLANマシンにsshでログインしてからそのマシン上でpusshを実行するとより高速
    • ベンチマーク例 (Gigabit LAN基準):
      $ time pussh -f servers -r 100 date  
      Total: 201 host(s), 4 second(s)  
      
      real    0m4.069s  
      user    0m7.132s  
      sys     0m3.140s  
      

開発と歴史

  • 2008年からBearstech社内で使われてきたツール
  • 当初は数行のシェルスクリプトだったが、現在では500台以上のサーバークラスターでも安定して動作する
  • クラウド管理システムと連携し、単純なホスト記述から実行可能なホスト一覧を生成する

制限事項

  • リモートサーバーのstdoutとstderrは区別されず、1つのストリームに結合されて出力される
  • リモートサーバーで実行されたコマンドの終了状態(exit status)は取得できない

2件のコメント

 
ahwjdekf 2025-04-24

名前がよくない!

 
nemorize 2025-04-25

まったくその通りです 🤣