ユーザーをグループに一括割り当て

ユーザーをグループに一括割り当て

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ファイルが消去されます。だからコピーしておくのが最善です。

その後、ユーザーも追加する必要がありますが、今は複雑ではありません。

おすすめ記事