X-Git-Url: https://defaria.com/gitweb/?a=blobdiff_plain;f=clients%2FHP%2Fbin%2Fadd_user;fp=clients%2FHP%2Fbin%2Fadd_user;h=f9c2e9e8fe9c213fda9641521882c968e407af0b;hb=a8c84d2892f07a6863b68a11eb0a4a79ffd71fb5;hp=0000000000000000000000000000000000000000;hpb=95384f94f88aceeb5eef2d322210ba4a438b6512;p=clearscm.git diff --git a/clients/HP/bin/add_user b/clients/HP/bin/add_user new file mode 100644 index 0000000..f9c2e9e --- /dev/null +++ b/clients/HP/bin/add_user @@ -0,0 +1,497 @@ +#!/bin/ksh +################################################################################ +# +# File: add_user +# Description: This script adds a user +# Author: Andrew DeFaria +# Language: Korn Shell +# Modified: +# +# (c) Copyright 2001, Andrew@DeFaria.com, all rights reserved +# +################################################################################ +# Parameters +employeenumber= +employeetype= +fullname= +groupname= +manager= +phone= +username= +workstation= +shell= +hostname= +homeserver= +displayname= + +# fieldvalue is used when prompting for non-supplied fields +fieldvalue= + +# Logfile +logfile=$TMPDIR/add_user.$$.log + +## Set global env variables +# Set me +me=${0##*/} + +function error { + print -u2 "$me: Error: $1" +} # error + +function warning { + print -u2 "$me: Warning: $1" +} # warning + +function display { + print "$1" +} # display + +function info { + display "$me: Info: $1" +} # info + +function verbose { + if [ ! -z "$verbose" ]; then + display "$1" + fi +} # verbose + +function debug { + if [ ! -z "$debug" ]; then + print -u2 "$me: Debug: $1" + fi +} # debug + +function usage { + display "$me [-v|verbose] [-d|debug] [-usage]" + display " -v|verbose: Turns on verbose mode" + display " -d|debug: Turns on debug mode" + display " -usage: Print this usage message" + display + display "The following options will be prompted for if not supplied on the" + display "command line. If any command line parameter has spaces in it then" + display "you need to surround it in quotes (e.g. -owners_fullname" + display "\"Andrew DeFaria\". Note: Do NOT use quotes when responding to" + display "prompts for missing information." + display + display " -employeenumber Specify the Employee \#" + display " -employeetype One of Employee, SEED or Contractor" + display " -fullname The employee's full name" + display " -groupname Synchronize group name" + display " -manager Full name of manager" + display " -phone In the format of 7-XXXX (the t-44 will" + display " be prepended)" + display " -username Unix/NT username for this new user" + display " -workstation One of Unix|X Terminal|Win NT" + display " -shell One of ksh|sh|csh|tcsh" + display " -hostname Name of workstation host or X Terminal" + display " server" + display " -homeserver Name of machine where \$HOME will be" + display " created" + display " -displayname Name of DISPLAY" + + error "$1" + exit 1 +} # usage + +function prompt_for_field { + fieldname="$1" + fieldvalue= + + while [ ! -n "$fieldvalue" ]; do + display "Enter the value for $fieldname:\c" + read fieldvalue + + if [ ! -n "$fieldvalue" ]; then + error "Must specify $fieldname!" + fi + done +} # prompt_for_field + +function display_parms { + display "New user:" + display "------------------------------------------------------" + display "employeenumber = $employeenumber" + display "employeetype = $employeetype" + display "fullname = $fullname" + display "groupname = $groupname" + display "manager = $manager" + display "phone = $phone" + display "username = $username" + display "workstation = $workstation" + display "shell = $shell" + display "hostname = $hostname" + display "homeserver = $homeserver" + display "displayname = $displayname" + display + display "Command line equivalent:" + display + display "$me -employeenumber $employeenumber \\" + display " -employeetype $employeetype \\" + display " -fullname \"$fullname\" \\" + display " -groupname $groupname \\" + display " -manager \"$manager\" \\" + display " -phone $phone \\" + display " -username $username \\" + display " -workstation $workstation \\" + display " -shell $shell \\" + display " -hostname $hostname \\" + display " -homeserver $homeserver \\" + display " -displayname $displayname" + display "Are the parameters correct [Y|n]?\c" + read answer + case "$answer" in + Y|y) + : OK! + ;; + *) + exit + esac +} # display_parms + +# Get parameters +while [ $# -ge 1 ]; do + case "$1" in + -usage) + usage + ;; + + -v|-verbose) + verbose=yes + ;; + + -d|-debug) + debug=yes + ;; + + -employeenumber) + if [ $# -gt 1 ]; then + shift + employeenumber="$1" + fi + ;; + + -employeetype) + if [ $# -gt 1 ]; then + shift + employeetype="$1" + fi + ;; + + -fullname) + if [ $# -gt 1 ]; then + shift + fullname="$1" + fi + ;; + + -groupname) + if [ $# -gt 1 ]; then + shift + groupname="$1" + fi + ;; + + -manager) + if [ $# -gt 1 ]; then + shift + manager="$1" + fi + ;; + + -phone) + if [ $# -gt 1 ]; then + shift + phone="$1" + fi + ;; + + -username) + if [ $# -gt 1 ]; then + shift + username="$1" + fi + ;; + + -workstation) + if [ $# -gt 1 ]; then + shift + workstation="$1" + fi + ;; + + -shell) + if [ $# -gt 1 ]; then + shift + shell="$1" + fi + ;; + + -hostname) + if [ $# -gt 1 ]; then + shift + hostname="$1" + fi + ;; + + -homeserver) + if [ $# -gt 1 ]; then + shift + homeserver="$1" + fi + ;; + + -displayname) + if [ $# -gt 1 ]; then + shift + displayname="$1" + fi + ;; + + *) + usage "Unrecognized parameter $1" + ;; + esac + shift +done + +if [ "_$employeenumber" = "_" ]; then + verbose "Employee Number was not specified!" + prompt_for_field "Employee Number" + employeenumber="$fieldvalue" +fi + +if [ "_$employeetype" = "_" ]; then + verbose "Employee Type was not specified!" + prompt_for_field "Employee Type" + employeetype="$fieldvalue" +fi + +while true; do + case "$employeetype" in + Employee|SEED|Contractor) + break + ;; + + *) + error "Employee Type was not one of \"Employee\", \"SEED\" or \"Contractor\"!" + prompt_for_field "Employee Type" + employeetype="$fieldvalue" + ;; + esac +done + +if [ "_$fullname" = "_" ]; then + verbose "Employee Name was not specified!" + prompt_for_field "Employee Name" + fullname="$fieldvalue" +fi + +if [ "_$groupname" = "_" ]; then + verbose "Project Name was not specified!" + prompt_for_field "Project Name" + groupname="$fieldvalue" +fi + +while true; do + if [ -f "/net/cllapp/opt/synchronize/db/GroupTemplates/$groupname" ]; + then + break + else + verbose "Project name \"$groupname\" is not valid!" + display + display "Valid Project names are:" + cd /net/cllapp/opt/synchronize/db/groups/Projects + ls * + cd $OLDPWD + display + prompt_for_field "Project Name" + groupname="$fieldvalue" + fi +done + +if [ "_$manager" = "_" ]; then + verbose "Project Manager was not specified!" + prompt_for_field "Project Manager" + manager="$fieldvalue" +fi + +if [ "_$phone" = "_" ]; then + verbose "Phone was not specified!" + prompt_for_field "Phone" + phone="$fieldvalue" +fi + +if [ "_$username" = "_" ]; then + verbose "Username was not specified!" + prompt_for_field "Username" + username="$fieldvalue" +fi + +if [ "_$workstation" = "_" ]; then + verbose "Workstation was not specified!" + prompt_for_field "Workstation" + workstation="$fieldvalue" +fi + +while true; do + case "$workstation" in + Unix|"X Terminal"|"Win NT") + break + ;; + + *) + error "Workstation was not one of Unix|X Terminal|Win NT!" + prompt_for_field "Workstation" + workstation="$fieldvalue" + ;; + esac +done + +if [ "_$shell" = "_" ]; then + verbose "Shell was not specified!" + prompt_for_field "Shell" + shell="$fieldvalue" +fi + +while true; do + case "$shell" in + ksh|sh|csh|tcsh) + break + ;; + + *) + error "Shell was not one of ksh, sh, csh or tcsh!" + prompt_for_field "Shell" + shell="$fieldvalue" + ;; + esac +done + +if [ "_$hostname" = "_" ]; then + verbose "Hostname was not specified!" + prompt_for_field "Hostname" + hostname="$fieldvalue" +fi + +if [ "$workstation" != "Win NT" ]; then + if [ "_$homeserver" = "_" ]; then + verbose "Home Server was not specified!" + prompt_for_field "Home Server" + homeserver="$fieldvalue" + fi +fi + +if [ "$workstation" = "Unix" ]; then + if [ "_$displayname" = "_" ]; then + displayname=$hostname + fi +elif [ "$workstation" = "X Terminal" ]; then + if [ "$displayname" = "$hostname" ]; then + verbose "Display name cannot be the same as hostname for an X Terminal" + prompt_for_field "Display name" + displayname="$fieldvalue" + fi + if [ "_$displayname" = "_" ]; then + prompt_for_field "Display name" + displayname="$fieldvalue" + fi +fi + +display_parms + +export PATH=$PATH:/app/admin/bin + +print "Add MOA Entry (Y/n)?\c" +read answer +answer=$(print "$answer" | tr [:upper:] [:lower:]) + +case $answer in + y|yes) + add_moa -username $username \ + -fullname "$fullname" \ + -phone $phone \ + -homeserver $homeserver \ + -shell $shell + ;; + *) + print "$fullname not added to MOA" + ;; +esac + +if [ "$employeetype" != "Contractor" ]; then + print "Add Synchronize Entry (Y/n)?\c" + read answer + answer=$(print "$answer" | tr [:upper:] [:lower:]) + + case $answer in + y|yes) + add_synchronize -username $username \ + -fullname "$fullname" \ + -groupname $groupname + ;; + *) + print "$fullname not added to Synchronize" + ;; + esac +fi + +print "Add Postnote Entry (Y/n)?\c" +read answer +answer=$(print "$answer" | tr [:upper:] [:lower:]) + +case $answer in + y|yes) + add_postnote -username $username \ + -fullname "$fullname" \ + -phone $phone \ + -hostname $hostname \ + -displayname $displayname + ;; + *) + print "$fullname not added to Postnote" + ;; +esac + +print "Add Shared/X Entry (Y/n)?\c" +read answer +answer=$(print "$answer" | tr [:upper:] [:lower:]) + +case $answer in + y|yes) + add_sharedx -username $username \ + -fullname "$fullname" \ + -phone $phone \ + -hostname $hostname \ + -displayname $displayname + ;; + *) + print "$fullname not added to Shared/X" + ;; +esac + +print "Send request for email account for $fullname (Y/n)?\c" +read answer +answer=$(print "$answer" | tr [:upper:] [:lower:]) + +case $answer in + y|yes) + if [ "$employeetype" != "Contractor" ]; then + add_email -username $username \ + -fullname "$fullname" \ + -employeetype $employeetype \ + -employeenumber $employeenumber \ + -manager "$manager" \ + -mailserver cllmail + else + add_email -username $username \ + -fullname "$fullname" \ + -employeetype $employeetype \ + -manager "$manager" \ + -mailserver cllmail + fi + ;; + *) + print "$fullname not added to email" + ;; +esac