Este script genera todo lo necesario para crear y dejar andando un usuario en el cluster. Luego hay que incluir al usuario en las colas que correspondan del torque
#!/bin/bash # # Script para agregar un usuario en el cluster usage() { echo "Usage: `basename $0` -u user -i \"Name Surname, etc\" -g group -e email " >&2 exit 1 } # Si no pasamos ningún argumento, invocamos función usage: [[ -n "$1" ]] || { usage; } # Procesamos los argumentos de entrada while getopts ":u:i:g:e:" Option do case $Option in u) user=$OPTARG ;; i) gecos=$OPTARG ;; g) group=$OPTARG;; e) email=$OPTARG;; *) usage;; esac done # Verificamos que le hayamos pasado todos los argumentos requeridos # Primero verificamos si el usuario existe [[ -n "$user" ]] || { echo "Must supply a username";usage; } if grep "^${user}:" /etc/passwd >/dev/null then echo ERROR: $user existe exit 1; else echo Usuario: $user fi # Ahora verificamos el dato de grupo [[ -n "$group" ]] || { echo "Must supply a group";usage; } if grep "^${group}:" /etc/group >/dev/null then echo "Grupo: $group" else echo "ERROR: El grupo $group no existe, debe crearlo primero" exit 2; fi # algo de información debe haber ingresado por la opción -i [[ -n "$gecos" ]] || { echo "ERROR: Some GECOS info must be provided";usage; } echo "GECOS: $gecos" # the user must have an email [[ -n "$email" ]] || { echo "ERROR: must provide the user\'s email";usage; } echo "Email: $email" # We should also check that email has proper format!!! (eventually this should be implemented) # OK, if we got here, we have all we need # Primero creamos el usuario: useradd -g $group -d /home/$user -c "$gecos" -s /bin/bash $user if grep "^${user}:" /etc/passwd >/dev/null then echo "Usuario $user creado"; else echo "ERROR: algo pasó, el usuario parece no existir" exit 3; fi mkdir /home/$user chown $user.$group /home/$user if test -d /home/$user then # Ahora creamos el .forward para que el usuario reciba las notificaciones del sistema cd /home/$user echo $email >.forward chown $user .forward chmod 600 .forward echo "Redirigiendo todo su email a $email" # Ahora creamos las llaves SSH cd /home/$user mkdir .ssh cd .ssh ssh-keygen -t rsa -b 1024 -f id_rsa if test -f id_rsa then cat id_rsa.pub >>authorized_keys fi # Ahora juntamos las llaves de los hosts del cluster en known_hosts for i in `cat /var/spool/torque/server_priv/nodes|awk '{print $1;}'` do echo getting key from node $i ssh-keyscan -t rsa $i >>/home/$user/.ssh/known_hosts done else echo "ERROR: algo pasó que el directorio del usuario no existe" fi