
テキスト ファイルが 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 ファイルが空になることに注意してください。そのため、コピーを作成することをお勧めします。
その後、ユーザーを追加する必要がありますが、この時点ではそれほど複雑ではありません。