我有 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 文件。所以最好复印一份。
然后你还需要添加用户;但目前这并不复杂。