2つのテキストファイルがあり、users.txtには1000人のユーザーリストが含まれ、groups.txtには50のグループリストが含まれています。各グループに30人のユーザーを追加するコマンドを実行したい(たとえば、ユーザー1〜30はグループ1、ユーザー31〜60はグループ2など)。これを行う最も実用的な方法は何ですか?
それぞれ30人のユーザーリストを含む50の新しいテキストファイルを作成し、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ファイルが消去されます。だからコピーしておくのが最善です。
その後、ユーザーも追加する必要がありますが、今は複雑ではありません。