Script para montar discos USB en Debian

­

Improvisa :: Informática :: Script para montar discos USB en DebianHola, resulta que llevaba tiempo utilizando usbmount en Debian Squeeze pero en el cambio de versión de udev parece ser que el fichero /lib/udev/vol_id, al que hace referencia el script usbmount y lo utiliza para averiguar el sistema de archivos que utiliza el disco USB, ha dejado de existir.

Por no estar mirando versiones de paquetes y para que me sirviera por mucho tiempo, se me ocurrió hacer un script que pudiera modificar según mis necesidades para montar los discos o memorias USB según su sistema de archivos y con las opciones que me interesa.

De esta forma, al ejecutar el script se montarán los discos USB que se encuentren conectados sin montar, así que por si alguien necesita algo parecido lo pego aquí:

#!/bin/bash
­
for que_posible_dispositivo in `cat /proc/diskstats | grep "sd.1" | awk ‘{ print ($3) }’`;
  do
    dispositivo="/dev/${que_posible_dispositivo}"
    if [ "`mount | grep $dispositivo`" != "" ]
      then
        punto_de_montaje=`mount | grep $dispositivo | cut -d" " -f 3`
        echo "Dispositivo $dispositivo ya se encuentra montado en  punto_de_montaje"
      else
        i=1
        punto_de_montaje=""
        until [ "$punto_de_montaje" != "" ]
          do
            if [ "`mount | grep /media/usb$i`" == "" ]
              then
                punto_de_montaje="/media/usb$i"
              fi
            i=`expr $i 1`
          done
        sudo mkdir -p $punto_de_montaje
        sistema_de_archivos=`sudo udevadm info –query=all –name  que_posible_dispositivo | grep ID_FS_TYPE | cut -d= -f 2`
        echo "Montando $dispositivo ($sistema_de_archivos) en  punto_de_montaje"
        case $sistema_de_archivos in
          "ext3")
            sudo mount -t ext3 -o exec,suid $dispositivo $punto_de_montaje
            ;;
          "vfat")
           
sudo mount -t vfat -o  oexec,uid=alfonso,gid=alfonso,fmask=113,dmask=002,iocharset=iso8859-15,codepage=850  $dispositivo $punto_de_montaje
            ;;
          "ntfs")
           
sudo mount -t ntfs -o
noexec,uid=alfonso,gid=alfonso,fmask=113,dmask=002,nls=iso8859-15
$dispositivo $punto_de_montaje
            ;;
          *)
            echo "ERROR: sistema de archivos $sistema_de_archivos desconocido"
            ;;
          esac
      fi
done

Recordad cambiar el usuario "alfonso" por el correspondiente y cuidado con los saltos de línea que introduce el CMS para formatear la página.

Saludos.

Comentarios

    Warning: Use of undefined constant type - assumed 'type' (this will throw an Error in a future version of PHP) in /home/improvisa_com/web/improvisa.com/public_html/wp-content/themes/grassland/comments.php on line 38
  • Juanmi dice:

    Muchisimas gracias Alfonso, es un placer tenerte por aquí, después de todo lo que me has ayudado sigues haciendolo y esta vez para Improvisa 😉 Mil gracias.

    Sobre el script me queda una duda, supongo que se ejecuta el solo cuando pinchas un disco USB, como sonsigues hacer esto, ya que en el artículo no lo dices.

  • Alfonso dice:

    Hola Juanmi, la verdad es que no lo ejecuto cuando se conecta el USB, lo de "pinchar" el USB es de tu cosecha 😉 Lo que hago es tener un icono en el escritorio y en el panel lateral para montarlos y otro para desmontarlos. Para que sea automático tanto KDE como Gnome tienen por interfaz web un modo de ejecutar el script al conectarse/desconectarse un dispositivo USB pero lo "elegante" sería hacerlo vía udev en el fichero al efecto para ello que está en /etc/udev/rules.d/usb.rules o el fichero que crees dentro del mismo directorio y poner algo así como:

    BUS=="usb", SYSFS{product}=="IDENTIFICADOR_DISPOSITIVO", KERNEL=="sd?1", NAME="NOMBRE_DISPOSITIVO", SYMLINK="ENLACE_SIMBOLICO_A_CREAR_PARA_REFERIRSE_AL_DISPOSITIVO", RUN="SCRIPT_QUE_QUIERES_EJECUTAR"

     

  • Juanmi dice:

    Aclaradísimo, pensaba que lo ejecutaba solo udev y este ejecutaba el script. Mil gracias de nuevo 😉

  • Devil dice:

    Gracias por este interesante aporte