/ rhea_user
rhea_user
 1  #!/usr/bin/env bash
 2  
 3  env|grep -q ^DRYRUN=.&&DRYRUN=echo||DRYRUN=
 4  
 5  # 20210317WF - add user
 6  #
 7  # setup default groups and put ni config in .bashrc
 8  #
 9  
10  # important groups on server
11  _USER_GROUPS=lncd,luna_wallace,kvm,docker,users
12  
13  mkpass(){
14     # concat nwords
15     local n_words=3
16     local min_word_len=5
17     LC_ALL=C grep -P "[a-z]{$min_word_len}" /usr/share/dict/words |
18        shuf -n $n_words|
19        sed 's/.*/\u&/'|
20        tr -dC '[A-Za-z]'
21  }
22  user_dne(){
23    local user="$1"
24    grep -q "$user" /etc/passwd && echo "have $user in $_" && return 1
25    return 0
26  }
27  add_rhea_user(){
28     local user="$1"; shift
29     local fullname="$*"
30     $DRYRUN useradd -g lncd -m -G "$_USER_GROUPS" -s "$(which bash)" -c "$fullname" $user
31  }
32  set_passwd(){
33     local user="$1"; shift
34     local pass
35     [ $# -gt 0 ] && pass="$1" || pass=$(mkpass)
36     echo -e "$pass\n$pass" | $DRYRUN passwd $user
37     echo "# using '$pass'"
38  }
39  add_rc(){
40     # add default ni settings: env (path, python, fsl, afni, ...) and bash prompt, aliases, etc
41     local user="$1"
42     echo "source /opt/ni_tools/dotfiles/bash/.bashrc" |
43        sudo -u $user tee -a /home/$user/.bashrc >/dev/null
44  
45     # R config file: make sure we look to ni_tools for packages
46     sudo -u $user ln -s /opt/ni_tools/dotfiles/Rprofile/.Rprofile /home/$user/
47  }
48  
49  # if running (not sourcing)
50  if [[ "$(caller)" == "0 "* ]]; then 
51     # run as root
52     if [ $(id -u ) -ne 0 ]; then
53       sudo $0 "$@" 
54       exit $?
55     fi
56  
57     # parse args
58     [ $# -lt 2 ] && echo "USAGE: $0 user full name" && exit 1
59     user="$1"; shift
60     fullname="$*";
61  
62  
63     # already have user
64     user_dne $user || exit
65  
66     add_rhea_user "$user" "$fullname"
67     set_passwd "$user"
68     add_rc "$user"
69  fi