Если локальных, то есть готовая утилита newusers (если не ошибаюсь в названиии). Если серверных с авторизацией через лдап базу, то разработчики домурыжили-таки ldap-addusers и теперь он сносно работает, что радует).
Я когда-то делал так. Создавал текстовый файл со списком пользователей (т.е. напечатать в каждой строке имя и фамилию). Затем запускал sed и подсовывал ему два файла
#переводит в нижний регистр и транслитирирует русские символы для подготовки к созданию логинов
#например Иванов Иван Иванович в ivanov ivan ivanovich
#порядок использования: sed -f transliterate file
#transliterate - название этого файла-скрипта
#file - путь к текстовому файлу с русскими именами
y/АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ/абвгдеёжзийклмнопрстуфхцчшщъыьэюя/
y/абвгдезийклмнопрстуфхцыэ/abvgdeziyklmnoprstufhzye/
s/ё/yo/g
s/я/ya/g
s/ю/yu/g
s/ч/ch/g
s/ш/sh/g
s/щ/ch/g
s/ж/zh/g
s/ь//g
s/ъ//g
####################
#s/\(^.....\).*[ ]\(...\).*[ ].*$/\1\2/g #преобразует "фамилия имя отчество" в логин "фамилимя"
#s/\(^.....\).*[ ]\(...\).*$/\1\2/g #преобразует "фамилия имя" в логин "фамилимя"
#s/\(^...\).*[ ]\(.....\).*$/\2\1/g #преобразует "имя фамилия" в логин "фамилимя"
Таким образом получал логины).
На втором этапе генерировал текстовый файл для newusers
#!/bin/bash
#скрипт, генерирующий текстовый файл для создания учетных записей с помощью newusers
uid=1000
index=0
logins=`cat /home/user/logins.txt` #текстовый файл с логинами
range=999
#for login in $logins
#do
#let "uid += 1"
#let "index += 1"
#number=$RANDOM
#let "number %= $range"
#echo "$login:pwd$number:$uid:123:Student User $index:/home/$login:/bin/bash"
#done
#вариант для создания ncsa файла авторизации
for login in $logins
do
echo $login:`pwgen -Bn 5` >> file.txt #pwgen - утилита генерации паролей
done
Ну и на следующем шаге можно запустить newusers и подсунуть ему сгенерированный ранее текстовый файл. Вот так я развлекался)
Время шло и я научился (подсмотрел)), что можно использовать аргументы. Вот так я недавно создавал пользователей в moodle, зная немного про массивы из школьного курса и про sed). Получилось мудрёно, но зато работает.
#!/bin/bash
#скрипт, генерирующий текстовый файл для создания учетных записей в moodle
ARGS=2
if [ $# -ne "$ARGS" ]
then
# Ошибка в параметрах командной строки.
echo "Порядок использования: `basename $0` file1 file2"
echo "
(file1-текстовый файл с именами, file2-текстовый файл с логинами)"
exit $POS_PARAMS_MISSING
fi
logins=`cat $2` #текстовый файл с логинами
a=0
for i in `sed "s/\(^.*.\) \(.*.$\)/\1/" $1` #выделяем из имени и фамилии только имя
do
a=$a+1
firstname[$a]=$i #заносим имя в массив firstname
done
a=0
for i in `sed "s/\(^.*.\) \(.*.$\)/\2/" $1` #выделяем из имени и фамилии только фамилию
do
a=$a+1
lastname[$a]=$i #заносим фамилию в массив lastname
done
echo "id;username;password;email;firstname;lastname;city;country" # >> moodle_users.txt # Можно сразу сохранить в новый файл названия колонок
a=0
#вариант для создания moodle файла
for login in $logins
do
a=$a+1
echo ";$login;`pwgen -Bn 5`;$login@school.ru;${firstname[$a]};${lastname[$a]};город N;RU" # >> moodle_users.txt # Сохраняем в файл
done
Так как большей частью задаю тут вопросы, а не отвечаю, решил вот внести некий вклад, коли и у меня был такой случай. Думаю, что тема почти раскрыта). Кстати автору темы может понравиться мой супер-пупер скрипт-транслитиратор), раз уж вы так жарите латиницей). Уважаю!)