Автор Тема: pajalust apamagite mne:(( (как написать скрипт по созданию пользователей)  (Прочитано 1742 раз)

Оффлайн david

  • Участник
  • *
  • Сообщений: 3
kak napisat skript katori pazvaliat sazdavat 100 polzovatelei adnavremnno sobstvennimi paroliami i ix home direktoriei:))
« Последнее редактирование: 04.07.2013 21:38:34 от sb »

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Откуда будут браться данные о паролях и всем остальном ? Думаю, можно в интернете поискать примеры таких скриптов.
PS Более четко определите вашу задачу, исходные условия. Тогда можно разговаривать предметно.

Оффлайн david

  • Участник
  • *
  • Сообщений: 3
ia iska i nicho ne mog niati :((( mne nujna napisat skript on doljen sazdat 100 polzovateleli ix je pariolm i u nix daljna bit svoi grupii home driektorii:)

Оффлайн david

  • Участник
  • *
  • Сообщений: 3
dannie dannie ne znaiu atkuda brat  ia magu ix sam pridumat ili iz faila:))

Оффлайн ksa

  • Модератор глобальный
  • *****
  • Сообщений: 9 049
Скрипт будет работать только тогда, когда будут данные. Если вы их будете на ходу придумывать, то зачем нужен скрипт ? Просто создавайте сто пользователей и всё. В таком случае написание скрипта бессмысленно. Если же у вас есть данные пользователей (хотя бы имена), то нет проблемы написать такой скрипт. Делаете в цикле чтение из файла (пока есть новые строчки с записями имен пользователей), добавляете пользователя по имени (автоматически ему назначается домашняя папка) с паролем, соответствующем имени (то есть, прочитанному из файла). Я не так силен в баше, но вот вам алгоритм.

Оффлайн rotkart

  • Участник
  • *
  • Сообщений: 661
kak napisat skript katori pazvaliat sazdavat 100 polzovatelei adnavremnno sobstvennimi paroliami i ix home direktoriei:))
Каков вопрос - таков ответ! Не судите строго:
#! /bin/bash
FILE=users.csv
for NUM in `seq 1 100`
do
USER=user$NUM
PW=`pwgen -1`
useradd $USER
echo -e '$PW'\\n'$PW'\\n | passwd $USER
echo $USER\;$PW >> $FILE
done
Создать 100 пользователей с логинами userX, где X от 1 до 100, сгенерировать им пароль, записать в файл, который можно открыть как электронную таблицу. Опции генерации паролей подберите по вкусу.
« Последнее редактирование: 05.07.2013 23:13:01 от rotkart »
Научить нельзя, научиться можно.

ska

  • Гость
Если локальных, то есть готовая утилита 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
Так как большей частью задаю тут вопросы, а не отвечаю, решил вот внести некий вклад, коли и у меня был такой случай. Думаю, что тема почти раскрыта). Кстати автору темы может понравиться мой супер-пупер скрипт-транслитиратор), раз уж вы так жарите латиницей). Уважаю!)
« Последнее редактирование: 07.07.2013 15:41:32 от ska »