根用户脚本

时间:2016-12-10 04:14:39

标签: 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密码,因此我选择了此选项。

请咨询

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式更改一批服务器(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工作,这应该有效。