linux - 每周为 root 用户脚本更改密码

标签 linux unix scripting change-password

我收到了在所有基于 Linux 的机器上每 10 天更改一次 root 密码的请求,这些是生产机器并且启用了 grub 密码,因此如果我们忘记/遗漏了 root/grub 密码,我们将无法恢复。

我写了一个简单的脚本,将密码重定向到文件,即 nfs 共享文件。所以它每周都会将密码写入 nfs 共享文件。

文件格式如下

 Machine1:
 Machine2:
 Machine3:

我们将执行类似的脚本

 sh autopass.sh Machine1 

因此它更改了 Machine1 的 root 密码,并在 nfs 共享文件中用新密码替换了 Machine1 的旧密码。所以我们每周都会向授权用户发送密码

下面是脚本

#!/bin/sh 
#Function to create Random Password
function randpass() {
[ "$2" == "13" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
cat /dev/urandom | tr -cd "$CHAR" | head -c 8
echo
}
#Get Random Password to rootnewpass variable
rootnewpass=`randpass`
#Replace new password in file rootpass
sed -i "s/^\(${1}:\).*/\1${rootnewpass}/" /nfs/rootpass
#Change new Password using new random generated keyword 
echo -e "root:$rootnewpass" | chpasswd

所以现在我想要的是我的方法是好的还是任何其他更好的方法来实现它。这里的问题是我不应该把密码放错地方,这意味着不应该将错误的密码重定向到文件。

我也将相同的概念用于 grub 密码。

注意:所有机器不应该有相同的 root 密码,因此我选择了这个选项。

请指教

最佳答案

您可以通过以下方式更改一批服务器(100台服务器:10.1.0.1到10.1.0.100)上root用户的密码:

# for ((i=1;i<=100;i++)); do \
ssh 10.1.0.$i 'echo -e "newpassword\nnewpassword" | passwd  --stdin root'; \
done;

让它成为一个 cron 作业,这应该会起作用。

关于linux - 每周为 root 用户脚本更改密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41072103/

相关文章:

c - 即使 SIGKILLed 但正常进程不会做同样的事情,终端也会与所有 child 一起出现故障

linux - 关闭命令提示符或腻子后如何保持 julia 运行

linux - 从 root (unix) 运行脚本时变量不存储值

linux - 如何搜索 XX,如果找到,则在下一行中搜索 YY?

python - [Python][evdev] 获取鼠标点击后光标位置

linux - Bash 中带有变量的 If 语句

linux - Unix 中的无缓冲 I/O

shell - 在unix中使用 "find"命令时出错

linux - 在 'grep' 中 - 为什么它会这样?

linux : compare just a part of two directory names