Скрипт создания пользователя

Выкладываю текст скрипта который использую, может кому пригодиться:

<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>