将用户批量分配到组

将用户批量分配到组

我有 2 个文本文件,users.txt 包含 1000 个用户的列表,groups.txt 包含 50 个组的列表。我想运行一个命令,将 30 个用户添加到每个组(例如:用户 1-30 到组 1,用户 31-60 到组 2,等等)。这样做最实用的方法是什么?

我想我可以创建 50 个新文本文件,每个文件包含 30 个用户的列表,并运行 50 个 bash 脚本,但我觉得有比这更好的方法。

编辑:这是我到目前为止所拥有的:

for i in `cat users.txt` ; do useradd $i; echo Pass$i | passwd $i -- stdin; done
for i in `cat groups.txt ; do groupadd $i; done

答案1

虽然这只是一个练习,你应该自己做,但这里有一个解决方案:你真的应该自己做,否则就傻了。

使用一些循环和简单的测试:

while read group
do 
  i=30
  while read user
  do 
    echo $user:$group
    let "i--" 
    if [ $i -eq 0 ]
    then 
      break
    fi
  done < /tmp/users.txt
  sed -i -e '1,30d' /tmp/users.txt
done < groups.txt > userswithgroup.txt

请注意,这将清空您的 users.txt 文件。所以最好复印一份。

然后你还需要添加用户;但目前这并不复杂。

相关内容