Initial add of defaria.com
[clearscm.git] / defaria.com / Computers / code / adm / bin / add_moa
1 #!/bin/bash
2 ################################################################################
3 #
4 # File:         add_moa
5 # RCS:          $Header: add_moa,v 1.4 98/03/19 13:52:49 fong Exp $
6 # Description:  This script adds a new person to moa
7 # Author:       Andrew DeFaria, California Language Labs
8 # Created:      Mon May 19 15:56:06 PDT 1997
9 # Modified:     
10 # Language:     Korn Shell
11 #
12 # (c) Copyright 2001, Andrew@DeFaria.com, all rights reserved
13 #
14 ################################################################################
15 # Set me to command name
16 me=$(basename $0)
17
18 # Set adm_base
19 adm_base=${adm_base:-//sonscentral/Corporate/Software/adm}
20
21 # Set adm_fpath
22 adm_fpath=${adm_fpath:-$adm_base/functions}
23
24 # Source functions
25 . $adm_fpath/common
26
27 function usage {
28   print -u2 "Usage: $me -username <username> -fullname <fullname>"
29   print -u2 "\t-phone <phone> -homeserver <homeserver> -shell <shell>"
30   exit 1
31 } # usage
32
33 function add_to_moa {
34   cd $admin_root/lib
35   co -q -l $master_passwd
36
37   if [ $? -ne 0 ]; then
38     error "Unable to checkout $master_passwd"
39     exit $?
40   fi
41   
42   trap cancel_checkout INT ERR
43
44   if [ "$shell" = "tcsh" ]; then
45     shell="/app/tcsh"
46   else
47     shell="/bin/$shell"
48   fi
49   
50   uid=$(/app/newuid) # generate unique uid
51   print "$username:*:$uid:$gid:$fullname,42U,$phone,_MoA_:/nfs/$homeserver/data/home/$username:$shell" >> $master_passwd
52
53   if [ $? -ne 0 ]; then
54     error "Unable to add entry to $master_passwd"
55     exit $?
56   fi
57
58   ci -u -q -m"Added $fullname" $master_passwd
59   if [ $? -ne 0 ]; then
60     error "Unable to check in new master password file!"
61     exit $?
62   fi
63
64   trap INT ERR
65
66   cd $OLDPWD
67 } # add_to_moa
68
69 function cancel_checkout {
70   info "Canceling checkout"
71   rcs -q -u $master_passwd
72   chmod -w $master_passwd
73   co -q $master_passwd
74   exit 1
75 } # cancel_checkout
76 A
77 function user_exists {
78   grep -ve "^#" $master_passwd | cut -f1 -d: |
79     grep "$username" >/dev/null 2>&1
80   return $?
81 } # user_exists
82
83 # Find admin root
84 if [ -d /net/bismol/app/admin ]; then
85   admin_root=/net/bismol/app/admin
86 elif [ -d /net/hpclbis/app/admin ]; then
87   admin_root=/net/hpclbis/app/admin
88 elif [ -d /nfs/bismol/app/admin ]; then
89   admin_root=/nfs/bismol/app/admin
90 elif [ -d /nfs/hpclbis/app/admin ]; then
91   admin_root=/nfs/hpclbis/app/admin
92 elif [ -d /nfs/hpclbis/root/app/admin ]; then
93   admin_root=/nfs/hpclbis/root/app/admin
94 else
95   error "Internal error: Unable to ascertain admin_root!"
96   exit 1
97 fi
98
99 master_passwd=$admin_root/lib/master_passwd
100 gid=191                 # lang group
101 username=
102 fullname=
103 phone=
104 homeserver=
105 shell=
106
107 while [ $# -ge 1 ]; do
108   case "$1" in
109     -usage)
110       usage
111       ;;
112     
113     -username)
114       if [ $# -le 1 ]; then
115         error "Username not specified!"
116         usage
117       fi
118       shift
119       username="$1"
120       ;;
121     
122     -fullname)
123       if [ $# -le 1 ]; then
124         error "Full name not specified!"
125         usage
126       fi
127       shift
128       fullname="$1"
129       ;;
130     
131     -phone)
132       if [ $# -le 1 ]; then
133         error "Phone not specified!"
134         usage
135       fi
136       shift
137       phone="$1"
138       ;;
139     
140     -homeserver)
141       if [ $# -le 1 ]; then
142         error "Home machine not specified!"
143         usage
144       fi
145       shift
146       homeserver="$1"
147       ;;
148     
149     -shell)
150       if [ $# -le 1 ]; then
151         error "Shell not specified!"
152         usage
153       fi
154       shift
155       shell="$1"
156       ;;
157     
158     *)
159       error "Unknown parameter encounter: \"$1\""
160       usage
161       ;;
162   esac
163   shift
164 done
165
166 if [ "_$username" = "_" -o \
167  "_$fullname" = "_" -o \
168  "_$phone"    = "_" -o \
169  "_$homeserver"   = "_" -o \
170  "_$shell"        = "_" ]; then
171   error "Missing parameter"
172   usage
173 fi
174
175 #if $(user_exists); then
176   #error "$username already exists in the master password file"
177 #else
178   add_to_moa
179   if [ $? -eq 0 ]; then
180     info "Account for $fullname has been successfully created"
181   else
182     error "Problems encountered trying to create account for $fullname"
183   fi
184 #fi