pssh(并行 ssh)为每个主机传递不同的参数

pssh(并行 ssh)为每个主机传递不同的参数

我有一个名为的文件hosts,如下所示:

host1
host2
host3
host4
.....

在这些机器上还有一个名为机器名的本地用户。 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+ 您应该在配置文件中将用户指定为选项。%h将扩展到 OpenSSH 5.6 及更高版本的主机名。您可以使用此代码片段始终使用以主机名命名的用户

host*
    User %h

如果您的所有服务器始终都有以您可以使用的主机命名的用户

*
    User %h

如果您使用的是旧版本的 OpenSSH(您应该更新),您可以使用以下命令手动指定主机的用户

host1
    User host1
host2
    User host2
...

相关内容