Массовое распределение пользователей по группам

Массовое распределение пользователей по группам

У меня есть 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, поэтому лучше сделать его копию.

Затем вам все равно придется добавить пользователей; но на данном этапе это несложно.

Связанный контент