Parallel-ssh はホスト上でスクリプトを 2 回実行します。

Parallel-ssh はホスト上でスクリプトを 2 回実行します。

ホストシステムで次の簡単なコマンドを実行します。

apt update > /dev/null 2>&1 && apt upgrade -y  > /dev/null 2>&1 && wget -4 -q --header 'XXXX' -O - https://raw.githubusercontent.com/XXX/add.sh | bash -x

私の人生をより簡単にするためにbase64を使用してエンコードしてからホストでデコードするので、私の端末が邪魔になることを心配する必要はありません。

parallel-ssh -t 500 -O StrictHostKeyChecking=no -i -h /root/hosts -x "-i /root/.ssh/ssh_host_ed25519_key" 'BASE64 STRING | base64 -w 0 -d | bash'

しかし、私のスクリプトはホストコンピュータで2回実行されます。理由はわかりません。ホストの元のコマンドは期待どおりに機能し、shスクリプトをbashにパイプして一度だけ実行します。パラレルSSHで動作が変更されました。

なぜ?

答え1

GNU Parallelがある場合は試してください(テストされていません):

env_parallel --session
doit() {
  apt update > /dev/null 2>&1 &&
    apt upgrade -y  > /dev/null 2>&1 &&
    wget -4 -q --header 'XXXX' -O - https://raw.githubusercontent.com/XXX/add.sh |
    bash -x
}
env_parallel --nonall --ssh 'ssh -O StrictHostKeyChecking=no -i -h /root/hosts -x "-i /root/.ssh/ssh_host_ed25519_key"' -S server1,server2 doit
env_parallel --end-session

関連情報