使用 chpasswd 在多个服务器上更改密码

使用 chpasswd 在多个服务器上更改密码

我想使用 for 循环更改多个服务器上的密码。

问题是我必须为每个服务器输入 sudo passwd(100+)

这是我有的命令,但它不起作用,

for i in `cat hosts`
do
    ssh user@${i} 'echo user:newpassword | 
                    sudo -S  <<< "sudopasswd" /usr/sbin/chpasswd'
done

任何帮助都会很高兴被接受。

谢谢

答案1

您的输入重定向和此处字符串放置不正确。您将此处字符串“sudopasswd”提供给了 的标准输入sudo -S,这优先于通过管道传输 echo 输出(这种方式会丢失)。

您可以做的是sudo启动一个 Bash shell 并在其中运行echochpasswd管道,将它们与其余部分分开:

ssh user@${i} 'sudo -S  <<< "sudopasswd" /bin/bash -c "echo user:newpassword |
                                                        /usr/sbin/chpasswd"'

相关内容