グループへのユーザーの一括割り当て

グループへのユーザーの一括割り当て

テキスト ファイルが 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 ファイルが空になることに注意してください。そのため、コピーを作成することをお勧めします。

その後、ユーザーを追加する必要がありますが、この時点ではそれほど複雑ではありません。

関連情報