diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2020-02-25 11:42:22 +0100 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2020-02-25 11:42:22 +0100 |
commit | 56a0affd51ff28404d5f1e9cd4328137c9cd2ef0 (patch) | |
tree | 55935bd9517f049cba98157daab1a71bd7a7550f | |
parent | 995b512765f380d164b2b3959188d6b9e856434b (diff) |
#957: `setsmbpass` script adapted to common functions.
-rwxr-xr-x | server/bin/setsmbpass | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/server/bin/setsmbpass b/server/bin/setsmbpass index efd90eec..4e478c54 100755 --- a/server/bin/setsmbpass +++ b/server/bin/setsmbpass @@ -1,9 +1,10 @@ #!/bin/bash #/** -# setsmbpass #@file setsmbpass [ogLive] -#@brief Cambia la contraseña del usuario del cliente para acceder a los servicios Samba. +#@brief Cambia la contraseña de los clientes para acceder a los servicios principales. +#@usage setsmbpass [ogLive] +#@param ogLive solo modifica la clave del cliente indicado (puede crear inconsistencias) #@warning Se modifica el Initrd del cliente y se cambia la clave en el servidor. #@warning No se modifica el usuario de acceso (usuario "opengnsys"). #@version 1.0.2 - Versión inicial. @@ -15,21 +16,22 @@ #*/ ## -# Variables. -PROG=$(basename "$0") -PATH=$PATH:$(dirname "$(realpath "$0")") +# Variables y funciones globales. +PROG="$(basename "$0")" OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} +PATH=$PATH:$OPENGNSYS/bin SAMBAUSER="opengnsys" # Usuario por defecto. TFTPDIR=$OPENGNSYS/tftpboot INITRD=oginitrd.img TMPDIR=/tmp/oglive$$ let CHANGES=0 -# Control básico de errores. -if [ "$USER" != "root" ]; then - echo "$PROG: Error: solo ejecutable por root" >&2 - exit 1 -fi +source /tmp/ogfunctions.sh || exit 1 + +# Control de parámetros. +[ "$*" == "help" ] && help +[ "$*" == "version" ] && version +[ "$USER" != "root" ] && raiseError access "Debe ser root" case $# in 0) # Cambios en todos los clientes ogLive instalados. if which oglivecli &>/dev/null; then @@ -40,9 +42,7 @@ case $# in 1) # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive). LIST="$1" ;; *) # Error de formato. - echo "$PROG: Error de ejecución" >&2 - echo "Formato: $PROG ogLive" - exit 1 ;; + raiseError usage ;; esac # Recuperar eco de consola si se corta el proceso. @@ -60,9 +60,8 @@ for OGLIVE in $LIST; do # Solo se deben aceptar números y letras para la clave de acceso. if [[ "$SAMBAPASS" =~ [^a-zA-Z0-9] ]]; then echo - echo "$PROG: Error: la clave solo debe contener caracteres alfanuméricos" >&2 stty echo 2>/dev/null - exit 2 + raiseError cancel "La clave solo debe contener caracteres alfanuméricos" fi echo # Obtener confirmación clave sin eco en pantalla. @@ -70,16 +69,13 @@ for OGLIVE in $LIST; do read -r SAMBAPASS2 echo stty echo 2>/dev/null - if [ "$SAMBAPASS" != "$SAMBAPASS2" ]; then - echo "$PROG: Error: las claves no coinciden" >&2 - exit 2 - fi + [ "$SAMBAPASS" != "$SAMBAPASS2" ] && raiseError cancel "Las claves no coinciden" fi # Editar la parte de acceso del cliente: # descomprimir Initrd, sustituir clave y recomprimir Initrd). echo "Configurando cliente \"$OGLIVE\" ..." mkdir -p $TMPDIR - cd $TMPDIR || exit 3 + cd $TMPDIR || ogRaiseError access "Directorio temporal" gzip -dc "$CLIENTINITRD" | cpio -im if [ -f scripts/ogfunctions ]; then sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions |