Montar los recursos compartidos por samba

Este script consta de una función de ayuda, que ya contiene un par de ejemplos para detallar su uso. El único punto que quizá debería adaptarse para el uso personalizado, es el momento de la llamada a smbclient, donde podemos especificar el usuario y la contraseña que deseemos para esa sesión samba.

Script:

#!/bin/bash

function montar {

    # control de argumentos
    if [ $# != 2 ] ; then

        resumen
        echo "Para informacion mas detallada: sambamount -h"
        exit 1

    fi

    # obtencion de recursos compartidos y impresion de estos por pantalla
    compartidos=`smbclient -L $2 | grep Disk | awk '{print $1}'`
    echo && echo "*** Recursos compartidos en $2 ***"
    echo "$compartidos" && echo

    # montaje de los recusros compartidos
    if [ -d $1 ] ; then

        cd $1
        for recurso in $compartidos ; do

            echo -n "¿Montar recusro compartido: $recurso? (s/n) "
            read opcion
            if [ $opcion == "s" ] || [ $opcion == "S" ] ; then

                mkdir ./$recurso
                if [ -d ./$recurso ] ; then

                    smbmount //$2/$recurso ./$recurso
                    if [ $? != 0 ] ; then

                        echo "Recurso: $recurso no montado."

                    fi

                else

                    echo "Recurso: $recurso no montado."

                fi

            fi

        done
        cd -

    else

        echo "No se encontro el directorio: $1"
        exit 1

    fi

}

function desmontar {

    # control de argumentos
    if [ $# != 1 ] ; then

        resumen
        echo "Para informacion mas detallada: sambamount -h"
        exit 1

    fi

    # localicacion de directorios montados y desmontaje
    if [ -d $1 ] ; then

        cd $1
        montados=`ls`
        for directorio in $montados ; do

            echo "Desmontando recurso: $directorio"
            smbumount ./$directorio
            if [ $? == 0 ] ; then # si se ha desmontado eliminamos el directorio

                rm -fr ./$directorio # solo borramos si smbumount tiene exito

            fi

        done
        cd -

    else

        echo "No se encontro el directorio $1"
        exit 1

    fi

}

function ayuda {

    resumen
    echo "Monta y desmonta los recursos compartidos por una maquina windows" && echo
    echo " -m: (opcion 'Montar')"
    echo " Monta los recursos compartidos encontrados en el host especificado."
    echo " Puede especificarse el host o la IP de la maquina windows."
    echo " Es necesario que el directorio donde se montara exista." && echo
    echo " -d: (opcion 'Desmontar')"
    echo " Desmonta todos los recursos compartidos montados en el punto de montaje"
    echo " especificado y borra los directorios que se crearon al montar."
    echo " Es importante proporcionar como punto de montaje el mismo que se indico"
    echo " al montar y no un subdirectorio, ya que el script al montar crea un"
    echo " subdirectorio para cada recurso y al desmontar desmonta todos los"
    echo " subdirectorios que creo. (Si luego se crearon mas subdirectorios en el"
    echo " punto de montaje intentara desmontarlos pero no borrara el directorio"
    echo " si no era un recurso compartido desmontado)."
    echo
    echo "Ejemplos (para el script con parametros):"
    echo " $0 -m ~/samba hostwin (o bien: $0 -m ~/samba 172.16.0.2)"
    echo " Montara en ~/samba los recursos compartidos en ese host."
    echo " El directorio ~/samba debe existir antes de ejecutar el script."
    echo " $0 -d ~/samba"
    echo " Desmontara todos los recursos compartidos montados en ~/samba" && echo
    echo "*** TODO: SambaMount por Nacx ***"
    echo "Este script solo es capaz de montar recursos compartidos cuyo nombre"
    echo "no contenga ningún espacio. La causa es el uso de awk para recoger el"
    echo "primer campo con lo que se quedaria unicamente con la primera palabra"
    echo "del nombre del recurso."
    echo "Esto podria corregirse sin utilizar el comando awk y tratando cada nombre"
    echo "de recurso encontrado para quitar los espacios, pero por el momento no he"
    echo "tenido tiempo."

}

function resumen {

    echo && echo " sambamount (Sin argumentos para usar el menu de opciones)"
    echo " sambamount -m [punto de montaje] [host]"
    echo " sambamount -d [punto de montaje]"
    echo " sambamount -h" && echo

}

function muestra_opciones {

    echo && echo "1) Montar"
    echo "2) Desmontar"
    echo "3) Ayuda"
    echo "4) Salir"

}

# Si no se pasan argumentos al script mostramos el menu de opciones

if [ $# == 0 ] ; then

    opciones="Montar Desmontar Ayuda Salir"
    select opt in $opciones ; do

        case "$opt" in

            Montar)

                echo -n "Punto de montaje: "
                read punto_montaje
                echo -n "Host remoto: "
                read host
                montar $punto_montaje $host
                muestra_opciones

            ;;
            Desmontar)

                echo -n "Punto de montaje: "
                read punto_montaje
                desmontar $punto_montaje
                muestra_opciones

            ;;
            Ayuda)

                ayuda
                muestra_opciones

            ;;
            Salir)

                exit 0

            ;;
            *)

                echo "Opcion incorrecta."
                muestra_opciones

            ;;

        esac

    done

else

    # Si se pasan argumentos ejecutamos sin mostrar el menu
    case "$1" in

        -m) montar $2 $3 ;;
        -d) desmontar $2 ;;
        -h) ayuda ;;
        *) resumen ;;

    esac
    exit 0

fi

Elaborado por Nacx para ADSLAyuda.com

Este sitio web utiliza cookies para mejorar su experiencia. Asumiremos que estás de acuerdo, pero puedes optar por no seguir si lo deseas. Aceptar Leer más