从文件将用户添加到操作系统

从文件将用户添加到操作系统

我有一个项目,其中包括将用户添加到操作系统,这些用户位于文本文件中。到目前为止我已经写了这个,但它不起作用,告诉我 useradd 不能正常工作。你能告诉我出了什么问题吗?

该文件的内容user.txt是:

charbel:password:1001:1001:Charbel Haddad:/home/charbel:/bin/bash:0:30:15:7:y
assil:p@ssw0rd:1002:1002:Assil:/home/assel:/bin/bash:0:30:10:5:n
marwan:p@ssw0rd:1003:1003:Marwan Ghantous:/home/marwan:/bin/bash:0:50:30:7:n
michel:password:1004:1004:Michel:/home/michel:/bin/bash:1:30:10:5:y

脚本:

FILE="user.txt"

USERNAME=$(cut -d ":" -f 1 $FILE)
PASSWORD=$(cut -d ":" -f 2 $FILE)
USER_ID=$(cut -d ":" -f 3 $FILE)
GROUP_ID=$(cut -d ":" -f 4 $FILE)
USER_INFO=$(cut -d ":" -f 5 $FILE)
HOME_DIRECTORY=$(cut -d ":" -f 6 $FILE)
SHELL=$(cut -d " " -f 7 $FILE)
MIN=$(cut -d ":" -f 8 $FILE)
MAX=$(cut -d ":" -f 9 $FILE)
INACTIVE=$(cut -d ":" -f 10 $FILE)
WARNING=$(cut -d ":" -f 11 $FILE)

useradd -m -c "${USERNAME}" "${PASSWORD}" "${USER_ID}" "${GROUP_ID}" "${USER_INFO}" "${HOME_DIRECTORY}" "${SHELL}" "${MIN}" "${MAX}" "${INACTIVE}" "${WARNING}"

答案1

这个问题看起来像是家庭作业/作业,这就是为什么我没有在这里展示完整的解决方案。

有一个几乎相同的问题https://stackoverflow.com/q/65303035/10622916

问题中的脚本不处理输入文件的各个行。您需要一个在每个周期中读取和处理一行的循环。

问题中使用的命令cut会将指定列中的所有值分配给变量,例如所有由空格分隔的用户名,例如

USERNAME="charbel assil marwan michel"

如果您只处理一行,使用多个cut命令也可以,但效率低下。

有关如何逐行处理文件并将输入字段分配给各个变量的示例,请阅读https://mywiki.wooledge.org/BashFAQ/001。有一些示例如何处理由冒号分隔的字段,以及如果输入可能包含比您需要的更多字段该怎么办。

相关内容