source: server/bin/setsmbpass @ 82e5b6c

918-git-images-111dconfigfileconfigure-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-instalacionwebconsole3
Last change on this file since 82e5b6c was a30baf2, checked in by ramon <ramongomez@…>, 8 years ago

#768: Script setsmbpass puede modificar uno o todos los ogLive instalados; script oglivecli usa comando curl en vez de wget.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5386 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 3.8 KB
Line 
1#!/bin/bash
2
3#/**
4#         setsmbpass
5#@file    setsmbpass [ogLive]
6#@brief   Cambia la contraseña del usuario del cliente para acceder a los servicios Samba.
7#@warning Se modifica el Initrd del cliente y se cambia la clave en el servidor.
8#@warning No se modifica el usuario de acceso (usuario "opengnsys").
9#@version 1.0.2 - Versión inicial.
10#@author  Ramón M. Gómez - ETSII Univ. Sevilla
11#@date    2011-07-28
12#@version 1.1.0 - Soporte para varios clientes ogLive.
13#@author  Ramón M. Gómez - ETSII Univ. Sevilla
14#@date    2017-06-20
15#*/ ##
16
17
18# Variables.
19PROG=$(basename "$0")
20PATH=$PATH:$(dirname "$(realpath "$0")")
21OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
22SAMBAUSER="opengnsys"                           # Usuario por defecto.
23TFTPDIR=$OPENGNSYS/tftpboot
24INITRD=oginitrd.img
25TMPDIR=/tmp/oglive$$
26let CHANGES=0
27
28# Control básico de errores.
29if [ "$USER" != "root" ]; then
30    echo "$PROG: Error: solo ejecutable por root" >&2
31    exit 1
32fi
33case $# in
34    0)  # Cambios en todos los clientes ogLive instalados.
35        if which oglivecli &>/dev/null; then
36            LIST=$(oglivecli list | awk '{print $2}')
37        else
38            LIST="ogclient"
39        fi ;;
40    1)  # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
41        LIST="$1" ;;
42    *)  # Error de formato.
43        echo "$PROG: Error de ejecución" >&2
44        echo "Formato: $PROG ogLive"
45        exit 1 ;;
46esac
47
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
62                echo
63                echo "$PROG: Error: la clave solo debe contener caracteres alfanuméricos" >&2
64                stty echo 2>/dev/null
65                exit 2
66            fi
67            echo
68            # Obtener confirmación clave sin eco en pantalla.
69            echo -n "Confirmar clave: "
70            read -r SAMBAPASS2
71            echo
72            stty echo 2>/dev/null
73            if [ "$SAMBAPASS" != "$SAMBAPASS2" ]; then
74                echo "$PROG: Error: las claves no coinciden" >&2
75                exit 2
76            fi
77        fi
78        # Editar la parte de acceso del cliente:
79        #    descomprimir Initrd, sustituir clave y recomprimir Initrd).
80        echo "Configurando cliente \"$OGLIVE\" ..."
81        mkdir -p $TMPDIR
82        cd $TMPDIR || exit 3
83        gzip -dc "$CLIENTINITRD" | cpio -im
84        if [ -f scripts/ogfunctions ]; then
85                sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
86                # TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
87                sed -i "s/busybox reboot/reboot/" scripts/ogfunctions
88                # FIN CÓDIGO TEMPORAL.
89                # Ticket 565, preparar acceso Rsync cliente.
90                echo "$SAMBAPASS" > scripts/passrsync
91                chown root.root scripts/passrsync
92                chmod 400 scripts/passrsync
93                # Generar Initrd del cliente.
94                find . | cpio -H newc -oa | gzip -9c > "$CLIENTINITRD"
95        else
96                echo "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
97        fi
98        rm -fr $TMPDIR
99        # Calcular suma de comprobación.
100        md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
101        let CHANGES++
102    else
103        echo "$PROG: Cliente \"$OGLIVE\" no accesible."
104    fi
105done
106if [[ $CHANGES != 0 ]]; then
107    # Ticket 565, preparar acceso Rsync servidor.
108    echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
109    chown root.root /etc/rsyncd.secrets
110    chmod 600 /etc/rsyncd.secrets
111    # Cambiar clave Samba.
112    echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
113else
114    echo "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
115fi
116
Note: See TracBrowser for help on using the repository browser.