![pssh(并行 ssh)为每个主机传递不同的参数](https://linux22.com/image/6530/pssh%EF%BC%88%E5%B9%B6%E8%A1%8C%20ssh%EF%BC%89%E4%B8%BA%E6%AF%8F%E4%B8%AA%E4%B8%BB%E6%9C%BA%E4%BC%A0%E9%80%92%E4%B8%8D%E5%90%8C%E7%9A%84%E5%8F%82%E6%95%B0.png)
我有一个名为的文件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
...