
У меня есть 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, поэтому лучше сделать его копию.
Затем вам все равно придется добавить пользователей; но на данном этапе это несложно.