1 | #!/bin/bash |
---|
2 | |
---|
3 | #_______________________________________________________________________________________________________________________________ |
---|
4 | # |
---|
5 | # PARAMETROS RECIBIDOS DESDE EL CLIENTE |
---|
6 | # $1 modo (admin, user) |
---|
7 | #_______________________________________________________________________________________________________________________________ |
---|
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 | |
---|
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 | |
---|
23 | # Salir si el repositorio est� bloquedo (tiene ficheros abiertos). |
---|
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. |
---|
35 | PROTO=${ogprotocol:-"smb"} |
---|
36 | case "$PROTO" in |
---|
37 | nfs|smb) ;; |
---|
38 | *) ogRaiseError $OG_ERR_FORMAT "protocolo desconocido $PROTO" |
---|
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 |
---|
50 | ogEcho info "$PROG: Montar repositorio $REPO por $PROTO en modo $1" |
---|
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 ;; |
---|
54 | esac |
---|
55 | |
---|
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 | |
---|