编写脚本来创建具有预定义密码的用户

编写脚本来创建具有预定义密码的用户

我需要一个简单的脚本。

一个名为 name 的文件userID由 10 个 unixID 组成,另一个名为 name 的文件passwd由 file 中这 10 个 unixID 的 10 个密码组成userID。每个文件的第一个字代表 unixID 和该 unixID 的相应密码。

我认为需要执行两个 for 循环或其他内容来为该特定用户 ID 分配密码

有没有人有什么建议?

答案1

您可以使用文件描述符在单个 while 循环执行中读取两个文件的输入。这是一个例子:

#!/bin/bash

# Assign file descriptors to users and passwords files
exec 3< users.txt
exec 4< passwords.txt

# Read user and password
while read iuser <&3 && read ipasswd <&4 ; do
    # Just print this for debugging
    printf "\tCreating user: %s with password: %s\n" $iuser $ipasswd
    # Create the user with adduser (you can add whichever option you like)
    adduser $iuser
    # Assign the password to the user, passwd must read it from stdin
    echo $ipasswd | passwd --stdin $iuser
done

请注意如何passwd要求从 读取密码stdin。您可能需要向上述代码添加大量健全性检查,例如检查文件是否存在、用户名不包含空格、用户在系统上尚不存在等...您还可以扩展脚本以接受这两个文件名称作为输入参数。

这个答案关于堆栈溢出非常有帮助。

答案2

好吧,如果我是你,我只会制作一个包含 unixID、密码的 csv,然后

 while IFS=',' read -ra VARARRAY; do
     #The userid would be $VARARRAY[0] and passwd would be $VARARRAY[1]
     #Create user with distro's preferred method here.
 done

为了运行它并保持动态我会

 cat newusers | ./createNewUsers.sh

之后你可以

 rm newusers

这样密码就不会残留。

堆栈溢出对代码的创建有一点帮助。

相关内容