各ホストに対して異なるパラメータを渡す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
...

関連情報