#!/bin/bash #_______________________________________________________________________________________________________________________________ # # PARAMETROS RECIBIDOS DESDE EL CLIENTE # $1 modo (admin, user) #_______________________________________________________________________________________________________________________________ ### codigos de error #$OG_ERR_NOTEXEC = 7 La llamada no se ha realizado desde OGclient. #$OG_ERR_NOTFOUND = 2 Repositorio no montado. #$OG_ERR_LOCKED = 4 Repositorio bloqueado. #$OG_ERR_NOTWRITE = 14 No Se ha realizado el montaje RW correctamente. # Error si llamada no se realliza desde OpenGnSys Client. PROG=$(basename $0) CALLER=$(ogGetCaller) if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG" exit $? fi # Salir si el repositorio est� bloquedo (tiene ficheros abiertos). REPOIP=$(ogGetRepoIp) if [ -z "$REPOIP" ]; then ogRaiseError $OG_ERR_NOTFOUND "repo no montado" exit $? fi if ogIsRepoLocked; then ogRaiseError $OG_ERR_LOCKED "repo $REPOIP" exit $? fi # Comprobar protocolo y modo de acceso. PROTO=${ogprotocol:-"smb"} case "$PROTO" in nfs|smb) ;; *) ogRaiseError $OG_ERR_FORMAT "protocolo desconocido $PROTO" exit $? ;; esac case "$1" in admin) MODE="rw,nolock" ;; user) MODE="ro,nolock" ;; *) ogRaiseError $OG_ERR_FORMAT "modo desconocido $1" exit $? ;; esac # Desmontar repositorio y volver a montarlo con el modo adecuado. umount $OGIMG ogEcho info "$PROG: Montar repositorio $REPO por $PROTO en modo $1" case "$PROTO" in nfs) mount -t nfs $REPOIP:$OGIMG $OGIMG -o $MODE ;; smb) mount -t cifs //$REPOIP/ogimages $OGIMG -o $MODE,serverino,acl,username=opengnsys,password=og ;; esac #Comprobamos que el tipo de acceso (escritura/lectura) se ha realizado correctamente. FILETEST="${OGIMG}/testWrite.txt" touch $FILETEST VALUE=$? case "$1" in admin) if [ "$VALUE" == 0 ] then rm $FILETEST else ogRaiseError $OG_ERR_NOTWRITE "sin acceso de escritura en modo admin" exit $? fi ;; user) if [ "$VALUE" == 0 ] then rm $FILETEST ogRaiseError $OG_ERR_NOTWRITE "Warning: con acceso de escritura en modo user" exit $? fi ;; esac