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

관련 정보