Parallel-ssh 在主机上执行脚本两次

Parallel-ssh 在主机上执行脚本两次

我在主机上运行这个简单的命令:

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'

但我的脚本在主机上执行了两次。我不知道为什么。主机上的原始命令按预期工作,将 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

相关内容