source: repoman/bin/mountimage

lgromero-new-oglive
Last change on this file was c28eefa, checked in by Natalia Serrano <natalia.serrano@…>, 19 months ago

Log to syslog in a number of shell scripts

  • Property mode set to 100755
File size: 2.4 KB
Line 
1#!/bin/bash
2#/**
3#        mountimage
4#@brief  Monta imagen sincronizable en el repositorio con permisos de escritura
5#@param 1 imagen
6#@param 2 extension [ img|diff ] opcional, por defecto img
7#@return  Directorio de montaje de la imagen.
8#@exception OG_ERR_FORMAT     # 1 formato incorrecto.
9#@exception OG_ERR_NOTFOUND # 2 Fichero o dispositivo no encontrado
10#@exception OG_ERR_DONTSYNC_IMAGE  #71 Imagen no sincronizable (es monolitica)
11#@exception OG_ERR_DONTMOUNT_IMAGE # 70 Error al montar una imagen sincronizada
12#@version 1.0 - Montar imagen sincronizable
13#@author  Irina Gomez
14#@date   2013-05-23
15#*/ ##
16BASEDIR=/opt/opengnsys
17REPODIR="$BASEDIR/images"
18# Cargamos los mensajes en el idioma del sistema.
19# Comprobamos que el fichero de idioma existe. Si no "es_ES" por defecto.
20ls $BASEDIR/client/etc/lang.$LANG.conf &>/dev/null
21[ $? -eq 0 ] || LANG="es_ES"
22source $BASEDIR/client/etc/lang.$LANG.conf
23source $BASEDIR/lib/ogfunctions.sh
24
25
26PROG="$(basename $0)"
27# Si se solicita, mostrar ayuda.
28if [ "$*" == "help" ]; then
29    echo -e " $PROG: $MSG_HELP_ogMountImage \n" \
30            "$MSG_FORMAT: $PROG nombre_image [ img|diff ] \n" \
31            "base -> $PROG Windows7 \n" \
32            "diff -> $PROG Ubuntu12 diff"
33   exit 0
34fi
35
36[ $# -lt 1 ] && echo -e "$PROG: Error: $MSG_ERR_FORMAT \n     $MSG_FORMAT: $PROG image [ img | diff ]" && exit 1
37
38if [ "$USER" != "root" ]; then
39        echo "$PROG: Error: solo ejecutable por root" >&2
40        exit 1
41fi
42
43[ "$2" == "" -o "$2" == "img" ] && IMGEXT="img" || IMGEXT="img.diff"
44
45# Comprobamos que existe imagen
46IMGFILE="$REPODIR/$1.$IMGEXT"
47[ ! -f $IMGFILE ] && echo "$PROG: Error: $MSG_ERR_NOTFOUND $1 $IMGEXT" && exit 2
48
49
50# Comprobar que la imagen  es sincronizable
51file $IMGFILE | grep -i -e " BTRFS Filesystem " >/dev/null && IMGFS=BTRFS
52file $IMGFILE | grep -i -e " ext4 filesystem " >/dev/null && IMGFS=EXT4
53if [ "$IMGFS" != "BTRFS" -a "$IMGFS" != "EXT4" ] ; then
54        echo "$PROG: Error: $MSG_ERR_DONTSYNC_IMAGE $1 $2"
55        exit 71
56fi
57
58MOUNTDIR="$REPODIR/mount/$1"
59[ "$IMGEXT" == "img.diff" ] && MOUNTDIR="$MOUNTDIR.${IMGEXT#*\.}"
60mkdir -p "$MOUNTDIR"
61
62# Comprobamos si la imagen esta montada y si es así nos salimos.
63df |grep "$MOUNTDIR$"  2>&1  >/dev/null && echo "$MOUNTDIR" && exit 0
64
65echolog "Mounting image '$IMGFILE' on '$MOUNTDIR'."
66if [ "$IMGFS" == "EXT4" ] ; then
67        mount -t ext4 "$IMGFILE" "$MOUNTDIR"
68else
69        mount -o compress=lzo  "$IMGFILE" "$MOUNTDIR"
70fi
71[ $? -eq 0 ] || ( echo "$MSG_ERR_DONTMOUNT_IMAGE  $1 $2" ; exit 70)
72echo  "$MOUNTDIR"
73
Note: See TracBrowser for help on using the repository browser.