[6905c2a7] | 1 | #!/bin/bash |
---|
| 2 | |
---|
| 3 | #_______________________________________________________________________________________________________________________________ |
---|
| 4 | # |
---|
| 5 | # PARAMETROS RECIBIDOS DESDE EL CLIENTE |
---|
| 6 | # $1 modo (admin, user) |
---|
| 7 | #_______________________________________________________________________________________________________________________________ |
---|
[eb9424f] | 8 | ### codigos de error |
---|
| 9 | #$OG_ERR_NOTEXEC = 7 La llamada no se ha realizado desde OGclient. |
---|
| 10 | #$OG_ERR_NOTFOUND = 2 Repositorio no montado. |
---|
| 11 | #$OG_ERR_LOCKED = 4 Repositorio bloqueado. |
---|
| 12 | #$OG_ERR_NOTWRITE = 14 No Se ha realizado el montaje RW correctamente. |
---|
| 13 | |
---|
[6905c2a7] | 14 | |
---|
| 15 | # Error si llamada no se realliza desde OpenGnSys Client. |
---|
| 16 | PROG=$(basename $0) |
---|
| 17 | CALLER=$(ogGetCaller) |
---|
| 18 | if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then |
---|
| 19 | ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG" |
---|
| 20 | exit $? |
---|
| 21 | fi |
---|
| 22 | |
---|
[eb9424f] | 23 | # Salir si el repositorio est� bloquedo (tiene ficheros abiertos). |
---|
[6905c2a7] | 24 | REPOIP=$(ogGetRepoIp) |
---|
| 25 | if [ -z "$REPOIP" ]; then |
---|
| 26 | ogRaiseError $OG_ERR_NOTFOUND "repo no montado" |
---|
| 27 | exit $? |
---|
| 28 | fi |
---|
| 29 | if ogIsRepoLocked; then |
---|
| 30 | ogRaiseError $OG_ERR_LOCKED "repo $REPOIP" |
---|
| 31 | exit $? |
---|
| 32 | fi |
---|
| 33 | |
---|
| 34 | # Comprobar protocolo y modo de acceso. |
---|
[16919ef] | 35 | PROTO=${ogprotocol:-"smb"} |
---|
| 36 | case "$PROTO" in |
---|
[6905c2a7] | 37 | nfs|smb) ;; |
---|
[16919ef] | 38 | *) ogRaiseError $OG_ERR_FORMAT "protocolo desconocido $PROTO" |
---|
[6905c2a7] | 39 | exit $? ;; |
---|
| 40 | esac |
---|
| 41 | case "$1" in |
---|
| 42 | admin) MODE="rw,nolock" ;; |
---|
| 43 | user) MODE="ro,nolock" ;; |
---|
| 44 | *) ogRaiseError $OG_ERR_FORMAT "modo desconocido $1" |
---|
| 45 | exit $? ;; |
---|
| 46 | esac |
---|
| 47 | |
---|
| 48 | # Desmontar repositorio y volver a montarlo con el modo adecuado. |
---|
| 49 | umount $OGIMG |
---|
[1222e988] | 50 | ogEcho info "$PROG: Montar repositorio $REPO por $PROTO en modo $1" |
---|
[16919ef] | 51 | case "$PROTO" in |
---|
| 52 | nfs) mount -t nfs $REPOIP:$OGIMG $OGIMG -o $MODE ;; |
---|
| 53 | smb) mount -t cifs //$REPOIP/ogimages $OGIMG -o $MODE,serverino,acl,username=opengnsys,password=og ;; |
---|
[6905c2a7] | 54 | esac |
---|
| 55 | |
---|
[eb9424f] | 56 | #Comprobamos que el tipo de acceso (escritura/lectura) se ha realizado correctamente. |
---|
| 57 | FILETEST="${OGIMG}/testWrite.txt" |
---|
| 58 | touch $FILETEST |
---|
| 59 | VALUE=$? |
---|
| 60 | |
---|
| 61 | case "$1" in |
---|
| 62 | admin) |
---|
| 63 | if [ "$VALUE" == 0 ] |
---|
| 64 | then |
---|
| 65 | rm $FILETEST |
---|
| 66 | else |
---|
| 67 | ogRaiseError $OG_ERR_NOTWRITE "sin acceso de escritura en modo admin" |
---|
| 68 | exit $? |
---|
| 69 | fi |
---|
| 70 | ;; |
---|
| 71 | user) |
---|
| 72 | if [ "$VALUE" == 0 ] |
---|
| 73 | then |
---|
| 74 | rm $FILETEST |
---|
| 75 | ogRaiseError $OG_ERR_NOTWRITE "Warning: con acceso de escritura en modo user" |
---|
| 76 | exit $? |
---|
| 77 | fi |
---|
| 78 | ;; |
---|
| 79 | esac |
---|
| 80 | |
---|