Выкладываю текст скрипта который использую, может кому пригодиться:
<code class="ruby">
#!/bin/bash
#################################################
# Скрипт автоматического создания пользователя #
# с отправной отсчета на E-mail #
# Написал: Клюкин Н.С. #
# E-mail: nik@nika-com.ru #
# WWW: http://www.nika-com.ru #
# Спецально для ООО "Компания НИКА" #
#################################################
# Задаём основные переменные
DOMAIN=nika-com.ru
ADMMAIL=kolianus@list.ru
PATCH=/var/calculate/user-create/
# Очищаем основное окно скрипта
clear
# Секция ввода данных о пользователя (Ф.И.О.)
echo "########## ВВОД ДАННЫХ О НОВОМ ПОЛЬЗОВАТЕЛЕ ##########"
echo
echo -e "Фамилия И.О.: \c"
read FULLNAME
# Проверка ввода данных о пользователе
if [ -z "$FULLNAME" ]
then
clear
echo
echo "### ВНИМАНИЕ ОШИБКА!!! ###"
echo
echo "Не введены данные о пользователе"
echo
echo "Работа зевершена"
echo
exit 1
fi
clear
# Секция ввода логина пользователя
echo "########## ВВОД ДАННЫХ О НОВОМ ПОЛЬЗОВАТЕЛЕ ##########"
echo
echo -e "Логин пользователя: \c"
read LOGIN
# Проверка ввода данных логина
if [ -z "$LOGIN" ]
then
clear
echo
echo "### ВНИМАНИЕ ОШИБКА!!! ###"
echo
echo "Не введен логин пользователя"
echo
echo "Работа зевершена"
echo
exit 1
fi
if [ "`echo $LOGIN | sed 's/[a-z,0-9,_,-]*//'`" = "" ];
then
echo
echo "Логин корректен"
else
clear
echo
echo "### ВНИМАНИЕ ОШИБКА!!! ###"
echo
echo "Логин некорректен"
exit 1
fi
sleep 03
clear
# Запуск генератора паролей
echo "########## ВВОД ДАННЫХ О НОВОМ ПОЛЬЗОВАТЕЛЕ ##########"
echo
echo "Генерация пароля для пользователя"
echo
MATRIX="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
LENGTH="8"
while [ "${n:=1}" -le "$LENGTH" ]
do
PASS="$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}"
let n+=1
done
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo
echo -e "\nДля пользователя создан пароль: "$PASS""
sleep 02
clear
# Секция ввода данных об основной группе SAMBA
echo "########## ВВОД ДАННЫХ О НОВОМ ПОЛЬЗОВАТЕЛЕ ##########"
echo
echo "DIR - Дирекция"
echo "FEO - Финансово-экономический отдел"
echo "BUH - Бухгалтерия"
echo "EKO - Экономический отдел"
echo "SGP - Склад готовой продукции"
echo "TEO - Транспортно-экспедиторский отдел"
echo "ORM - Отдел рекламы и маркетинга"
echo "OZL - Отдел внешних закупок и логистики"
echo "OPD - Отдел продаж и дистрибьюторской сети"
echo "ORP - Отдел разработки продукции"
echo "OPR - Отдел программирования"
echo "OTK - Отдел тестирования и качества"
echo "ORD - Отдел разработки документации"
echo "OPP - Отдел производства продукции"
echo "OTP - Отдел техподдержки"
echo "OKD - Отдел кадров"
echo "AXH - АХЧ"
echo "OSO - Отдел сервисного обслуживания"
echo
echo
echo -e "Введите основную группу пользователя: \c"
read SGROUP
# Проверка ввода данных о группе пользователя SAMBA
if [ -z "$SGROUP" ]
then
clear
echo
echo "### ВНИМАНИЕ ОШИБКА!!! ###"
echo
echo "Не введены данные о группах SAMBA"
echo
echo "Работа зевершена"
exit 1
fi
clear
# Секция ввода данных о дополнительных группах UNIX
echo "########## ВВОД ДАННЫХ О НОВОМ ПОЛЬЗОВАТЕЛЕ ##########"
echo
echo "users - Группа доступа к Network manager"
echo "wheel - Группа доступа для получения привилегии используя команду su"
echo "audio - Группа предоставляет доступ к звуковой карте"
echo "cdrom - Группа доступа к CD/DVD приводу"
echo "video - Группа доступа к TV-тюнеру"
echo "cdrw - Группа доступа запись на CD/DVD-диски"
echo "usb - Группа доступа к mp3-плеерам, флеш-накопителям"
echo "plugdev - Группа доступа монтирование USB-устройств"
echo "games - Группа доступа к играм"
echo "scanner - Группа доступа к сканеру"
echo "lp - Группа доступа к сканеру, встроенному в МФУ"
echo "uucp - Группа доступа к модему"
echo
echo
echo -e "Введите дополнительные группы пользователя: \c"
read UGROUP
# Проверка ввода данных о дополнительных группах UNIX
if [ -z "$UGROUP" ]
then
clear
echo
echo "### ВНИМАНИЕ ОШИБКА!!! ###"
echo
echo "Не введены данные о дополнительных группах UNIX"
echo
echo "Работа зевершена"
exit 1
fi
clear
# Секция ввода данных о группах PROXY
echo "########## ВВОД ДАННЫХ О НОВОМ ПОЛЬЗОВАТЕЛЕ ##########"
echo
echo "http - доступный порт 80"
echo "ftp - доступный порт 21"
echo "https - доступный порт 443"
echo "gopher - доступный порт 70"
echo "wais - доступный порт 210"
echo "unregistered - диапазон доступных портов 1025-65535"
echo "http-mgmt - доступный порт 280"
echo "gss-http - доступный порт 488"
echo "filemaker - доступный порт 591"
echo "multiling - доступный порт 777"
echo "swat - доступный порт 901"
echo
echo
echo -e "Введите группы PROXY для пользователя: \c"
read PGROUP
# Проверка ввода данных о группе пользователя PROXY
if [ -z "$PGROUP" ]
then
clear
echo
echo "### ВНИМАНИЕ ОШИБКА!!! ###"
echo
echo "Не введены данные о группах PROXY"
echo
echo "Работа зевершена"
exit 1
fi
clear
# Сопоставление переменных для групп Jabber
DIR="01. Дирекция"
FEO="02. Финансово-экономический отдел"
BUH="02.1. Бухгалтерия"
EKO="02.2. Экономический отдел"
SGP="02.3. Склад готовой продукции"
TEO="02.4. Транспортно-экспедиторский отдел"
ORM="03. Отдел рекламы и маркетинга"
OZL="04. Отдел внешних закупок и логистики"
OPD="05. Отдел продаж и дистрибьюторской сети"
ORP="06. Отдел разработки продукции"
OPR="06.1. Отдел программирования"
OTK="06.2. Отдел тестирования и качества"
ORD="06.3. Отдел разработки документации"
OPP="07. Отдел производства продукции"
OTP="08. Отдел техподдержки"
OKD="09. Отдел кадров"
AXH="10. АХЧ"
OSO="11. Отдел сервисного обслуживания"
JGROUP=${!SGROUP}
clear
# Секция проверки введеных данных
echo "########## ПРОВЕРКА ВВЕДЕНЫХ ВАМИ ДАННЫХ ##########"
echo
echo
echo "Пользователь: $FULLNAME"
echo "Логин UNIX: $LOGIN"
echo "Логин FTP: $LOGIN"
echo "Адрес электронной почты: $LOGIN@$DOMAIN"
echo "Основная группа samba: $SGROUP ($JGROUP)"
echo "Допольнительные группы UNIX: $UGROUP"
echo "Группы PROXY: $PGROUP"
echo "Основная группа Jabber: $JGROUP"
echo "Пользователь Jabber: $LOGIN@$DOMAIN"
echo "Пароль пользователя: $PASS"
echo
echo
# Секция проверки введеных вами данных
echo -e "Вы хотите продолжить? (y/n) \c"
read ZAPROS
while [ "$ZAPROS" = n ]
do
clear
echo
echo "### ВНИМАНИЕ!!! ###"
echo
echo "Работа скрипта прервана"
echo
exit 0
done
clear
# Секция создания пользователя UNIX
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">Создание пользователя UNIX"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo -e
/usr/bin/cl-useradd -G $UGROUP -c "$FULLNAME" $LOGIN unix
echo -e "$PASS" | cl-usermod -P $LOGIN unix
echo -e "\nГотово."
sleep 02
clear
# Секция создания пользователя UNIX
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">>Создание пользователя UNIX"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo -e
/usr/bin/cl-useradd -c "$FULLNAME" -g $SGROUP $LOGIN samba
echo -e "$PASS" | cl-usermod -P $LOGIN samba
echo -e "\nГотово."
sleep 02
clear
clear
# Секция содания пользователя MAIL
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">>>Создание пользователя MAIL"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo -e
/usr/bin/cl-useradd -c "$FULLNAME" -e $LOGIN@$DOMAIN $LOGIN mail
echo -e "$PASS" | cl-usermod -P $LOGIN mail
echo -e "\nГотово."
sleep 02
clear
clear
# Секция содания пользователя Jabber
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">>>>Создание пользователя Jabber"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo -e
/usr/bin/cl-useradd -c "$FULLNAME" $LOGIN jabber
/usr/bin/cl-usermod -g "$JGROUP" $LOGIN jabber
echo -e "$PASS" | cl-usermod -P $LOGIN jabber
echo -e "\nГотово."
sleep 02
clear
clear
# Секция содания пользователя Proxy
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">>>>>Создание пользователя Proxy"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo -e
/usr/bin/cl-useradd -c "$FULLNAME" $LOGIN proxy
/usr/bin/cl-usermod -G $PGROUP $LOGIN proxy
echo -e "$PASS" | cl-usermod -P $LOGIN proxy
echo -e "\nГотово."
sleep 02
clear
# Секция содания пользователя FTP
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">>>>>Создание пользователя FTP"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo -e
/usr/bin/cl-useradd -c "$FULLNAME" -m $LOGIN ftp
echo -e "$PASS" | cl-usermod -P $LOGIN ftp
echo -e "\nГотово."
sleep 02
clear
echo "Создание пользователя завершено: `date`" >$PATCH/$LOGIN.txt
echo "" >>$PATCH/$LOGIN.txt
echo "Пользователь: $FULLNAME" >>$PATCH/$LOGIN.txt
echo "Логин UNIX: $LOGIN" >>$PATCH/$LOGIN.txt
echo "Логин FTP: $LOGIN" >>$PATCH/$LOGIN.txt
echo "Адрес электронной почты: $LOGIN@$DOMAIN" >>$PATCH/$LOGIN.txt
echo "Основная группа samba: $SGROUP ($JGROUP)" >>$PATCH/$LOGIN.txt
echo "Допольнительные группы UNIX: $UGROUP" >>$PATCH/$LOGIN.txt
echo "Группы Proxy: $PGROUP" >>$PATCH/$LOGIN.txt
echo "Основная группа Jabber: $JGROUP" >>$PATCH/$LOGIN.txt
echo "Пользователь Jabber: $LOGIN@$DOMAIN" >>$PATCH/$LOGIN.txt
echo "Пароль пользователя: $PASS" >>$PATCH/$LOGIN.txt
echo >>$PATCH/$LOGIN.txt
echo "########## ВЫПОЛНЕНИЕ ПОСТАВЛЕНЫХ ЗАДАЧ ##########"
echo
echo ">>>>>>>Отправка письма с данными администратору"
echo
printf "[%60s] 0\045\r" " "
for ((i=1;i<=10;i++)) {
sleep .25
printf "[%60s] $((i*10))\045\r" " "
printf "[%$((i*6))s\r" " " | tr ' ' '#'
}
echo
sendEmail -f admin@nika-com.ru -t $ADMMAIL -o message-charset=utf-8 -u "Пользователь $FULLNAME создан" -m "
Создание пользователя завершено: `date`
Пользователь: $FULLNAME
Логин UNIX: $LOGIN
Логин FTP: $LOGIN
Адрес электронной почты: $LOGIN@$DOMAIN
Основная группа samba: $SGROUP ($JGROUP)
Допольнительные группы UNIX: $UGROUP
Группы Proxy: $PGROUP
Основная группа Jabber: $JGROUP
Пользователь Jabber: $LOGIN@$DOMAIN
Пароль пользователя: $PASS
" -s smtp.yandex.ru -xu admin@nika-com.ru -xp kolbasa -l $PATCH/send.log -a $PATCH/$LOGIN.txt
sleep 02
clear
exit 1
</code>