각 호스트에 대해 서로 다른 매개변수를 전달하는 pssh(병렬 SSH)

각 호스트에 대해 서로 다른 매개변수를 전달하는 pssh(병렬 SSH)

다음과 같은 파일이 있습니다 hosts.

host1
host2
host3
host4
.....

이 시스템에는 machinename이라는 로컬 사용자도 있습니다. host1사용자는 host1호스트 등에 생성 됩니다.

모든 컴퓨터에서 이러한 모든 사용자 계정을 잠그는 방법이 있습니까?

제가 사용했던 물건이 제대로 작동하지 않는 것 같아요.

pssh -h hosts -l root -i passwd -l hostname |cut -d. -f1

이 명령을 사용하여 각 호스트 이름에 해당하는 각 사용자 계정을 잠그고 싶습니다.

내 말이 무슨 뜻인지 이해하시기 바랍니다.

감사해요!

답변1

HOSTNAME호스트를 결정하는 변수를 사용하여 원격 호스트에서 명령을 빌드합니다 .

pssh -h hosts -l root -i 'passwd -l "$(hostname)"'

이는 잠긴 사용자 계정의 이름이 시스템에서 생각하는 이름이라고 가정합니다. SSH 구성에서 별명을 사용하고 컴퓨터의 실제 호스트 이름 대신 명령에서 별명을 사용하려는 경우 또는 호스트 이름이 DNS 호스트 이름과 다른 경우 $PSSH_HOST대신 사용할 수 있습니다 $(hostname). 단, 서버 구성이 다음과 같은 경우에만 가능합니다. 원격 호스트는 환경에서 이를 허용합니다. 이 변수 ​​이름을 전달하지만 많은 시스템에서는 기본적으로 이를 수행하지 않습니다.

답변2

pssh~/.ssh/config 파일을 읽습니다. OpenSSH 5.6+를 사용하는 경우 구성 파일의 옵션으로 사용자를 지정해야 합니다. %hOpenSSH 5.6 이상으로 확장될 호스트 이름입니다. 이 코드 조각을 사용하면 항상 호스트 이름으로 명명된 사용자를 사용할 수 있습니다.

host*
    User %h

모든 서버에 항상 호스트 이름을 딴 사용자가 있는 경우 다음을 사용할 수 있습니다.

*
    User %h

이전 버전의 OpenSSH(업데이트해야 함)를 사용하는 경우 다음을 사용하여 호스트 사용자를 수동으로 지정할 수 있습니다.

host1
    User host1
host2
    User host2
...

관련 정보