gpt4 book ai didi

linux - 使用启用密码的 sudo 帐户更改 root 密码身份验证的脚本

转载 作者:太空宇宙 更新时间:2023-11-04 11:47:53 26 4
gpt4 key购买 nike

我想更改多个服务器的根密码。我使用带有 for 循环和 chpasswd 实用程序的 shell 来执行此操作。由于 sudo 帐户启用了密码,因此在我退出脚本时它一直提示 sudo 密码。

下面是 bash 脚本是用 bash 写的。但总是提示输入密码。

#!/bin/bash
pass="PASSWORD"

for i in $(cat serverlist)

do

ssh -t sudouser@$i "sudo chpasswd <<EOF

root:"$pass"

EOF" ;

done

完全自动化的 bash 来更改 root 密码。

最佳答案

我也认为你应该使用expect。我编写的脚本没有经过全面测试,因为我没有适合更改密码的服务器:-)

#!/bin/bash

read -p "Server username? " USERNAME
read -sp "Server password for ${USERNAME}? " PASSWORD

echo
read -p "Name of file containing server list? " S_FILE
read -p "User to change on servers? " S_USERNAME
read -sp "New password for user ${S_USERNAME}?" S_PASSWORD
echo

while IFS= read -r SERVER; do
[ ! -z "${SERVER}" ] || continue
expect <<-EOF
spawn ssh ${USERNAME}@${SERVER}
expect "*: " { send "${PASSWORD}\r" }
expect "*$ " { send "echo '${S_USERNAME}:${S_PASSWORD}' | sudo chpasswd\r" }
expect "*: " { send "${PASSWORD}\r" }
expect "*$ " { send "exit\r" }
EOF
echo
done < ${S_FILE}
exit $?

关于linux - 使用启用密码的 sudo 帐户更改 root 密码身份验证的脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57038720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com