我有一个用户列表,我想将其添加为我的服务器的用户(userlist.txt)。
我想使用 useradd 添加他们并将他们的名字作为评论
所以...文件的每一行都包含这样的内容:
vno572,2548,veronica norena,cornerstone group,user,4331,1872,49:46
我想获取“vno572”+“veronia norena”并添加用户,如下所示:
useradd vno572 -c "veronica norena"
我需要遍历整个文件并在每一行中添加每个用户。
到目前为止我有这个:
cat userlist.txt | while read line
do
echo $userid
userid=’cut -d ‘,’ -f 1 userlist.txt’
echo $name
name=’cut -d ‘,‘ -f 3 userlist.txt’
useradd $userid -c “$name”
done
答案1
awk -F, 'BEGIN { OFS=FS } { print $1, $3 }' userlist.txt |
while IFS=, read username realname; do
useradd -c "$realname" "$username"
done
上面awk
将从提供的文件中挑选出第一列和第三列,并创建一个以逗号分隔的用户名列表,后跟真实姓名。
读取以逗号分隔的输出awk
,按逗号分割,并将其存储在 shell 变量username
and中realname
,并useradd
调用。
通常,当创建用户时,可能希望同时为其添加主目录。通过添加到-m
的调用来完成此操作useradd
。如果用户应该属于特定组或具有辅助组,请将-g
和-G
与输入数据中的其他信息一起使用。
答案2
尝试使用这个,尚未测试:
cat userlist.txt|awk -F',' '{print $1" "$3}'|while read var1 var2;
do
useradd $var1 -c "$var2"
done
希望它有效:)
答案3
仅使用awk
:
awk -F, '{ system(sprintf("useradd %s -c \"%s\"", $1, $3)) }' userlist.txt