source: server/bin/setsmbpass @ b897e4e

918-git-images-111dconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacion
Last change on this file since b897e4e was ff019d5, checked in by Ramón M. Gómez <ramongomez@…>, 5 years ago

#957: comparedhcpopengnsys script adapted to common functions.

  • Property mode set to 100755
File size: 4.0 KB
RevLine 
[f3b1480]1#!/bin/bash
[5b18e0e]2
3#/**
[a30baf2]4#@file    setsmbpass [ogLive]
[56a0aff]5#@brief   Cambia la contraseña de los clientes para acceder a los servicios principales.
6#@usage   setsmbpass [ogLive]
7#@param   ogLive    solo modifica la clave del cliente indicado (puede crear inconsistencias)
[5b18e0e]8#@warning Se modifica el Initrd del cliente y se cambia la clave en el servidor.
9#@warning No se modifica el usuario de acceso (usuario "opengnsys").
10#@version 1.0.2 - Versión inicial.
11#@author  Ramón M. Gómez - ETSII Univ. Sevilla
12#@date    2011-07-28
13#@version 1.1.0 - Soporte para varios clientes ogLive.
14#@author  Ramón M. Gómez - ETSII Univ. Sevilla
15#@date    2017-06-20
16#*/ ##
[f3b1480]17
18
[56a0aff]19# Variables y funciones globales.
20PROG="$(basename "$0")"
[f3b1480]21OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
[56a0aff]22PATH=$PATH:$OPENGNSYS/bin
[f3b1480]23SAMBAUSER="opengnsys"                           # Usuario por defecto.
[61ca7f4]24TFTPDIR=$OPENGNSYS/tftpboot
[5b18e0e]25INITRD=oginitrd.img
26TMPDIR=/tmp/oglive$$
27let CHANGES=0
[f3b1480]28
[ff019d5]29source $OPENGNSYS/lib/ogfunctions.sh || exit 1
[56a0aff]30
31# Control de parámetros.
32[ "$*" == "help" ] && help
33[ "$*" == "version" ] && version
[ff019d5]34[ "$USER" != "root" ] && raiseError access "Solo ejecutable por root"
[a30baf2]35case $# in
36    0)  # Cambios en todos los clientes ogLive instalados.
37        if which oglivecli &>/dev/null; then
38            LIST=$(oglivecli list | awk '{print $2}')
39        else
40            LIST="ogclient"
41        fi ;;
42    1)  # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
43        LIST="$1" ;;
44    *)  # Error de formato.
[56a0aff]45        raiseError usage ;;
[a30baf2]46esac
[f3b1480]47
[5b18e0e]48# Recuperar eco de consola si se corta el proceso.
49trap "stty echo 2>/dev/null" KILL
50# Buscar todos los clients ogLive instalados.
51for OGLIVE in $LIST; do
52    # Crear clave para usuario de acceso a los recursos.
53    CLIENTINITRD="$TFTPDIR/$OGLIVE/$INITRD"
54    if [ -r "$CLIENTINITRD" ]; then
55        if [ -z "$SAMBAPASS" ]; then
56            # Obtener clave del teclado sin eco en pantalla.
57            stty -echo 2>/dev/null
58            echo -n "Clave del usuario Samba: "
59            read -r SAMBAPASS
60            # Solo se deben aceptar números y letras para la clave de acceso.
61            if [[ "$SAMBAPASS" =~ [^a-zA-Z0-9] ]]; then
[693dac9]62                echo
63                stty echo 2>/dev/null
[56a0aff]64                raiseError cancel "La clave solo debe contener caracteres alfanuméricos"
[5b18e0e]65            fi
66            echo
67            # Obtener confirmación clave sin eco en pantalla.
68            echo -n "Confirmar clave: "
69            read -r SAMBAPASS2
70            echo
71            stty echo 2>/dev/null
[56a0aff]72            [ "$SAMBAPASS" != "$SAMBAPASS2" ] && raiseError cancel "Las claves no coinciden"
[f3b1480]73        fi
74        # Editar la parte de acceso del cliente:
75        #    descomprimir Initrd, sustituir clave y recomprimir Initrd).
[5b18e0e]76        echo "Configurando cliente \"$OGLIVE\" ..."
[f3b1480]77        mkdir -p $TMPDIR
[56a0aff]78        cd $TMPDIR || ogRaiseError access "Directorio temporal"
[5b18e0e]79        gzip -dc "$CLIENTINITRD" | cpio -im
[f3b1480]80        if [ -f scripts/ogfunctions ]; then
81                sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
[f0cfbc0]82                # TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
83                sed -i "s/busybox reboot/reboot/" scripts/ogfunctions
84                # FIN CÓDIGO TEMPORAL.
[f243a47]85                # Ticket 565, preparar acceso Rsync cliente.
[9555dd1]86                echo "$SAMBAPASS" > scripts/passrsync
87                chown root.root scripts/passrsync
88                chmod 400 scripts/passrsync
[f243a47]89                # Generar Initrd del cliente.
[5b18e0e]90                find . | cpio -H newc -oa | gzip -9c > "$CLIENTINITRD"
[f3b1480]91        else
[5b18e0e]92                echo "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
[f3b1480]93        fi
94        rm -fr $TMPDIR
[5b18e0e]95        # Calcular suma de comprobación.
96        md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
97        let CHANGES++
98    else
[a30baf2]99        echo "$PROG: Cliente \"$OGLIVE\" no accesible."
[5b18e0e]100    fi
101done
102if [[ $CHANGES != 0 ]]; then
103    # Ticket 565, preparar acceso Rsync servidor.
[72d9295]104    [ -e /etc/rsyncd.secrets ] && sed -i -n -e "/^$SAMBAUSER:/!p" -e "$ a$SAMBAUSER:$SAMBAPASS" /etc/rsyncd.secrets || echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
[5b18e0e]105    chown root.root /etc/rsyncd.secrets
106    chmod 600 /etc/rsyncd.secrets
107    # Cambiar clave Samba.
108    echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
[f3b1480]109else
[5b18e0e]110    echo "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
[f3b1480]111fi
112
Note: See TracBrowser for help on using the repository browser.