2 ################################################################################
5 # Description: This script adds a user
6 # Author: Andrew DeFaria
10 # (c) Copyright 2001, Andrew@DeFaria.com, all rights reserved
12 ################################################################################
27 # fieldvalue is used when prompting for non-supplied fields
31 logfile=$TMPDIR/add_user.$$.log
33 ## Set global env variables
38 print -u2 "$me: Error: $1"
42 print -u2 "$me: Warning: $1"
50 display "$me: Info: $1"
54 if [ ! -z "$verbose" ]; then
60 if [ ! -z "$debug" ]; then
61 print -u2 "$me: Debug: $1"
66 display "$me [-v|verbose] [-d|debug] [-usage]"
67 display " -v|verbose: Turns on verbose mode"
68 display " -d|debug: Turns on debug mode"
69 display " -usage: Print this usage message"
71 display "The following options will be prompted for if not supplied on the"
72 display "command line. If any command line parameter has spaces in it then"
73 display "you need to surround it in quotes (e.g. -owners_fullname"
74 display "\"Andrew DeFaria\". Note: Do NOT use quotes when responding to"
75 display "prompts for missing information."
77 display " -employeenumber Specify the Employee \#"
78 display " -employeetype One of Employee, SEED or Contractor"
79 display " -fullname The employee's full name"
80 display " -groupname Synchronize group name"
81 display " -manager Full name of manager"
82 display " -phone In the format of 7-XXXX (the t-44 will"
83 display " be prepended)"
84 display " -username Unix/NT username for this new user"
85 display " -workstation One of Unix|X Terminal|Win NT"
86 display " -shell One of ksh|sh|csh|tcsh"
87 display " -hostname Name of workstation host or X Terminal"
89 display " -homeserver Name of machine where \$HOME will be"
91 display " -displayname Name of DISPLAY"
97 function prompt_for_field {
101 while [ ! -n "$fieldvalue" ]; do
102 display "Enter the value for $fieldname:\c"
105 if [ ! -n "$fieldvalue" ]; then
106 error "Must specify $fieldname!"
111 function display_parms {
113 display "------------------------------------------------------"
114 display "employeenumber = $employeenumber"
115 display "employeetype = $employeetype"
116 display "fullname = $fullname"
117 display "groupname = $groupname"
118 display "manager = $manager"
119 display "phone = $phone"
120 display "username = $username"
121 display "workstation = $workstation"
122 display "shell = $shell"
123 display "hostname = $hostname"
124 display "homeserver = $homeserver"
125 display "displayname = $displayname"
127 display "Command line equivalent:"
129 display "$me -employeenumber $employeenumber \\"
130 display " -employeetype $employeetype \\"
131 display " -fullname \"$fullname\" \\"
132 display " -groupname $groupname \\"
133 display " -manager \"$manager\" \\"
134 display " -phone $phone \\"
135 display " -username $username \\"
136 display " -workstation $workstation \\"
137 display " -shell $shell \\"
138 display " -hostname $hostname \\"
139 display " -homeserver $homeserver \\"
140 display " -displayname $displayname"
141 display "Are the parameters correct [Y|n]?\c"
153 while [ $# -ge 1 ]; do
168 if [ $# -gt 1 ]; then
175 if [ $# -gt 1 ]; then
182 if [ $# -gt 1 ]; then
189 if [ $# -gt 1 ]; then
196 if [ $# -gt 1 ]; then
203 if [ $# -gt 1 ]; then
210 if [ $# -gt 1 ]; then
217 if [ $# -gt 1 ]; then
224 if [ $# -gt 1 ]; then
231 if [ $# -gt 1 ]; then
238 if [ $# -gt 1 ]; then
245 if [ $# -gt 1 ]; then
252 usage "Unrecognized parameter $1"
258 if [ "_$employeenumber" = "_" ]; then
259 verbose "Employee Number was not specified!"
260 prompt_for_field "Employee Number"
261 employeenumber="$fieldvalue"
264 if [ "_$employeetype" = "_" ]; then
265 verbose "Employee Type was not specified!"
266 prompt_for_field "Employee Type"
267 employeetype="$fieldvalue"
271 case "$employeetype" in
272 Employee|SEED|Contractor)
277 error "Employee Type was not one of \"Employee\", \"SEED\" or \"Contractor\"!"
278 prompt_for_field "Employee Type"
279 employeetype="$fieldvalue"
284 if [ "_$fullname" = "_" ]; then
285 verbose "Employee Name was not specified!"
286 prompt_for_field "Employee Name"
287 fullname="$fieldvalue"
290 if [ "_$groupname" = "_" ]; then
291 verbose "Project Name was not specified!"
292 prompt_for_field "Project Name"
293 groupname="$fieldvalue"
297 if [ -f "/net/cllapp/opt/synchronize/db/GroupTemplates/$groupname" ];
301 verbose "Project name \"$groupname\" is not valid!"
303 display "Valid Project names are:"
304 cd /net/cllapp/opt/synchronize/db/groups/Projects
308 prompt_for_field "Project Name"
309 groupname="$fieldvalue"
313 if [ "_$manager" = "_" ]; then
314 verbose "Project Manager was not specified!"
315 prompt_for_field "Project Manager"
316 manager="$fieldvalue"
319 if [ "_$phone" = "_" ]; then
320 verbose "Phone was not specified!"
321 prompt_for_field "Phone"
325 if [ "_$username" = "_" ]; then
326 verbose "Username was not specified!"
327 prompt_for_field "Username"
328 username="$fieldvalue"
331 if [ "_$workstation" = "_" ]; then
332 verbose "Workstation was not specified!"
333 prompt_for_field "Workstation"
334 workstation="$fieldvalue"
338 case "$workstation" in
339 Unix|"X Terminal"|"Win NT")
344 error "Workstation was not one of Unix|X Terminal|Win NT!"
345 prompt_for_field "Workstation"
346 workstation="$fieldvalue"
351 if [ "_$shell" = "_" ]; then
352 verbose "Shell was not specified!"
353 prompt_for_field "Shell"
364 error "Shell was not one of ksh, sh, csh or tcsh!"
365 prompt_for_field "Shell"
371 if [ "_$hostname" = "_" ]; then
372 verbose "Hostname was not specified!"
373 prompt_for_field "Hostname"
374 hostname="$fieldvalue"
377 if [ "$workstation" != "Win NT" ]; then
378 if [ "_$homeserver" = "_" ]; then
379 verbose "Home Server was not specified!"
380 prompt_for_field "Home Server"
381 homeserver="$fieldvalue"
385 if [ "$workstation" = "Unix" ]; then
386 if [ "_$displayname" = "_" ]; then
387 displayname=$hostname
389 elif [ "$workstation" = "X Terminal" ]; then
390 if [ "$displayname" = "$hostname" ]; then
391 verbose "Display name cannot be the same as hostname for an X Terminal"
392 prompt_for_field "Display name"
393 displayname="$fieldvalue"
395 if [ "_$displayname" = "_" ]; then
396 prompt_for_field "Display name"
397 displayname="$fieldvalue"
403 export PATH=$PATH:/app/admin/bin
405 print "Add MOA Entry (Y/n)?\c"
407 answer=$(print "$answer" | tr [:upper:] [:lower:])
411 add_moa -username $username \
412 -fullname "$fullname" \
414 -homeserver $homeserver \
418 print "$fullname not added to MOA"
422 if [ "$employeetype" != "Contractor" ]; then
423 print "Add Synchronize Entry (Y/n)?\c"
425 answer=$(print "$answer" | tr [:upper:] [:lower:])
429 add_synchronize -username $username \
430 -fullname "$fullname" \
431 -groupname $groupname
434 print "$fullname not added to Synchronize"
439 print "Add Postnote Entry (Y/n)?\c"
441 answer=$(print "$answer" | tr [:upper:] [:lower:])
445 add_postnote -username $username \
446 -fullname "$fullname" \
448 -hostname $hostname \
449 -displayname $displayname
452 print "$fullname not added to Postnote"
456 print "Add Shared/X Entry (Y/n)?\c"
458 answer=$(print "$answer" | tr [:upper:] [:lower:])
462 add_sharedx -username $username \
463 -fullname "$fullname" \
465 -hostname $hostname \
466 -displayname $displayname
469 print "$fullname not added to Shared/X"
473 print "Send request for email account for $fullname (Y/n)?\c"
475 answer=$(print "$answer" | tr [:upper:] [:lower:])
479 if [ "$employeetype" != "Contractor" ]; then
480 add_email -username $username \
481 -fullname "$fullname" \
482 -employeetype $employeetype \
483 -employeenumber $employeenumber \
484 -manager "$manager" \
487 add_email -username $username \
488 -fullname "$fullname" \
489 -employeetype $employeetype \
490 -manager "$manager" \
495 print "$fullname not added to email"