Bash 스크립트에서 병렬 SSH(pssh) 호출

Bash 스크립트에서 병렬 SSH(pssh) 호출

command를 사용하여 컴퓨터 목록에서 명령을 병렬로 실행할 수 있습니다 pssh. 예를 들어 foo여러 컴퓨터에 폴더를 만들려면 다음을 hosts.txt실행할 수 있습니다.

pssh -h hosts.txt -l MyUserName "mkdir foo"

그러나 명령에는 더 많은 인수(예: 인증을 위해 공개 키 사용 등)가 필요하기 때문에 bar.sh실행하려는 명령이 단순히 스크립트에 대한 인수로 제공되도록 다음 bash 스크립트를 만들려고 했습니다.

#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"

하지만 실행하면 bar.sh mkdir foo터미널이 정지됩니다. Ctrl+C를 사용해도 터미널을 종료할 수 없습니다.

어떤 아이디어가 있나요?

답변1

나는 에 너무 익숙하지 않습니다 pssh. GNU Parallel을 사용하는 경우 동일한 오류가 발생합니까?

#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"

사용자 이름을 Host.txt에 입력하세요.

myuser@host1
myuser@host2

답변2

-i(각 서버에 대한 인라인 집계 출력 및 오류)를 사용해야 합니다. 아래에서는 작동합니다.

pssh -h pssh.txt -l root -i uptime

관련 정보