Cómo usar GVFS para montar unidades de red Samba indicando usuario, dominio y contraseña; o cómo emular entrada de datos manual automáticamente con expect

Un título bien largo, pero es lo que vamos a hacer

Problema

Tengo una unidad de red llamada share en mi servidor de datos de red llamado host que quiero montar usando Samba y GVFS automáticamente, pero al ejecutar:

$ gvfs-mount smb://host/share

Siempre me pide lo siguiente:

User [tu_usuario]:
Domain [WORKGROUP]:
Password:

Y no tengo forma de automatizar eso.

Solución

Expect es un intérprete de órdenes (estilo bash) diseñado para emular a un usuario metiendo datos manualmente. Lo usaremos para montar las unidades automáticamente:

#!/usr/bin/env bash

# Montar unidades emulando a un usuario que mete datos
function mount_share {
    expect <<END
        spawn gvfs-mount $1
        set timeout -1
        expect User
        expect :
        send $2\r
        expect Domain
        expect :
        send $3\r
        expect Password:
        send $4\r
        wait
END
}

# Montar nuestra unidad de red
mount_share smb://host/share usuario dominio contraseña

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s